Thanx for the replies. Yeah, its pointing to itself.

x=2, *ptr=2, ptr=0xbfbfece0, &x=0xbfbfece0, &ptr=0xbfbfece4
x=2, *ptr=-1077941020, ptr=0xbfbfece4, &x=0xbfbfece0, &ptr=0xbfbfece4
x=2, *ptr=750764012, ptr=0xbfbfece5, &x=0xbfbfece0, &ptr=0xbfbfece4

Thanx once again.

-Arun

On 12/24/06, Otto Moerbeek <[EMAIL PROTECTED]> wrote:
>
>
> On Sun, 24 Dec 2006, Arun G Nair wrote:
>
> > 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..
>
> Likely ptr is pointing at itself after the *ptr++;
>
>         -Otto
>



-- 
...Keep Smiling...

Reply via email to