在给一个指针赋变量地址以后,便可以任意解引用
比如:
struct S {
int i;
int * p;
};
S s ; //1
int * p = &s.i; //2
p[0] = 4; //3
p[1] = 3;
p[2] = 5;
p[3] = 5;
p[4] = 5;
p[6] = 5;
p[5] = 5;
这里从p[0]到P[6],一直往下也可以,并没有问题。
另外指针赋值的时候,比如int *p = &n;这里是声明的时候并且赋值,但是如果要再要赋值就要这样,不能带解除引用:
int *p;
p = &n;
如果再这样*p = &n就出错了,这个时候应该是给*p赋值。
但是结构体里面就有点不同,上面p[1]对应的是应该是一个整数*p,但是不对,他实际上对应的却是p,当执行了p[1] = 3; 之后,p的值就变成了0x00000003了。
这个就奇怪了!
呵呵