下面的程序有没有问题,如果有问题,问题在哪里呢?
struct S
{
int i;
int* p;
};
int main()
{
struct S s;
int* p = &s.i;
p[0] = 4;
p[1] = 3;
s.p = p;
s.p[1] = 1;
s.p[2] = 2;
return 0;
}
解答:
p指向的是结构体s的首地址并且的 s.p 指针
其实就是 p[1]
所以,当执行到 s.p[1] = 1;之后 s.p 指向地址0x00000001的地方
所以当执行 s.p[2] = 2的时候 其实是想 0x00000001 的地方写数字 2
你说死不死?