Hi, Am a bit confused by the output of the this C program:
-------------------------------------------------------------ptr.c--- #include <stdio.h> int main() { int *ptr, x; x = 2; ptr = &x; printf("x=%d, *ptr=%d, ptr=%p, &x=%p\n", x, *ptr, ptr, &x); *ptr++; printf("x=%d, *ptr=%d, ptr=%p, &x=%p\n", x, *ptr, ptr, &x); ++(*ptr); printf("x=%d, *ptr=%d, ptr=%p, &x=%p\n", x, *ptr, ptr, &x); return 0; } -------------------------------------------------------------------------- The output I get is this: $ ./a.out x=2, *ptr=2, ptr=0xbfbfece0, &x=0xbfbfece0 x=2, *ptr=-1077941020, ptr=0xbfbfece4, &x=0xbfbfece0 x=2, *ptr=750764012, ptr=0xbfbfece5, &x=0xbfbfece0 --------------------------------------------------------------------------- If ++(*ptr) is supposed to increment the value *ptr, then why is there a change in memory address (0xbfbfece5) ? Any ideas ? I know that am referring someone else's memory, but still.. -Arun