<p>
<pre class=\\\"answer-content\\\">c也正确,写个程序验证一下:
#include stdio.h
struct st {
int n;
struct st *next;
} a[3], *p;
void st_init(void)
{
a[0].n = 5;
a[0].next =
a[1].n = 7;
a[1].next =
a[2].n = 9;
a[2].next = NULL;
p = a;
return ;
}
void st_print(void)
{
printf(\\\"p-n = %d\\\\np-n = %d\\\\n(*p).n = %d\\\\np-n = %d\\\\n\\\\n\\\",
p-n, p-n, (*p).n, p-n);
return ;
}
int main(int argc, char **argv)
{
st_init();
printf(\\\"(初始值)\\\\np = %p\\\\np-n = %d\\\\n\\\\n\\\", p, p-n);
printf(\\\"p-n = %d\\\\n\\\", p-n);
printf(\\\"p = %p\\\\np-n = %d\\\\n\\\\n\\\", p, p-n);
st_init();
printf(\\\"p-n = %d\\\\n\\\", p-n);
printf(\\\"p = %p\\\\np-n = %d\\\\n\\\\n\\\", p, p-n);
st_init();
printf(\\\"(*p).n = %d\\\\n\\\", (*p).n);
printf(\\\"p = %p\\\\np-n = %d\\\\n\\\\n\\\", p, p-n);
st_init();
printf(\\\"p-n = %d\\\\n\\\", p-n);
printf(\\\"p = %p\\\\np-n = %d\\\\n\\\\n\\\", p, p-n);
return 0;
}
结果:
(初始值)
p = 0x80498bc
p-n = 5
p-n = 5
p = 0x80498c4
p-n = 7
p-n = 5
p = 0x80498bc
p-n = 6
(*p).n = 6
p = 0x80498bc
p-n = 6
p-n = 6
p = 0x80498bc
p-n = 6
</p>
|