On Tue, Feb 25, 2014 at 5:20 AM, <random...@fastmail.us> wrote: > On Mon, Feb 24, 2014, at 13:05, j.e.ha...@gmail.com wrote: >> typedef struct { >> int value; >> } Number; >> >> Number *o; >> o = malloc(sizeof(*o)); >> o->value=3; >> printf("o<%p>, o->value<%p>\n", o, &o->value); >> >> o<0x9fe5008>, o->value<0x9fe5008> >> >> Is the compiler borked? > > That's cheating. Try printf("o<%p>", &o);
It's not cheating, but it's showing something different. Comparing o and &o->value shows that the structure itself and its first member are at the same location in memory. Comparing o and &o shows that the structure and the pointer to the structure are at different locations in memory. ChrisA -- https://mail.python.org/mailman/listinfo/python-list