struct S
{
int i;
int* p;
};
struct S a;
int *p = &a.i;
p[0] = 1;
p[1] = 2;
a.p = p; //这时,a.p的内容为p的地址,也就是指向结构a的起始地址
a.p[1] = 10; //这句运行后,S->p = 10,也就是结构S的指针p指向了10这个地址
a.p[0] = 12;//地址10+0的这个地址,不合法, 程序不能访问
这时,运行到a.p[0]=12这行时,出错,原因如上
{
int i;
int* p;
};
struct S a;
int *p = &a.i;
p[0] = 1;
p[1] = 2;
a.p = p; //这时,a.p的内容为p的地址,也就是指向结构a的起始地址
a.p[1] = 10; //这句运行后,S->p = 10,也就是结构S的指针p指向了10这个地址
a.p[0] = 12;//地址10+0的这个地址,不合法, 程序不能访问
这时,运行到a.p[0]=12这行时,出错,原因如上