现在的位置: 首页 > 综合 > 正文

新发现,有趣的指针

2013年10月11日 ⁄ 综合 ⁄ 共 416字 ⁄ 字号 评论关闭

在给一个指针赋变量地址以后,便可以任意解引用 

比如:

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了。

这个就奇怪了!

呵呵

抱歉!评论已关闭.