hi if i have a code Code: #include <stdio.h> #include <stdlib.h> int main(void) { int a=10, *ip; ip =&a; ip++; printf("ip is %d and a is %d\n",ip,a); [B]*ip++ = 0;[/B] system("pause"); return 0; } what do the code in bold do? thanks!
It's undefined, because ip doesn't point to anything definite. If you have something like this instead: Code: int a[10]; int *ip = &a[0]; ip++; *ip++=0; then this will be defined; ip will point to a[1], and the command will dereference and postincrement ip, and write 0 to the resulting address (which is a[1]) and leave ip pointing at a[2]. Without the first ip++ in your original code the behaviour will be defined because ip points to a; *ip++=0 sets a to 0 and increments ip, which then points to somewhere undefined in memory, and dereferencing the pointer again will lead to undefined behaviour.