指针的指针

来源:互联网 发布:吉他软件finger 编辑:程序博客网 时间:2024/05/16 18:38

 

指针和普通变量其实都一样, 只不过指针存储内容是地址,即数字, 而普通变量存储的内容是自己放置的值, 如int i;       i = 1; 这时候, i 放置的 值 是 1; 而定义一个指针int  *p ;

如果你真的知道某个变量的数字地址,那么你可以街样写,例如街个地址值是0x00000015,

那么指针可以街样赋值p = 0x00000015;但是地址一般都是透明的,你无法看得到一个变量地址是多少,只能通过&符号去获取变量的内存地址,如变量a的地址是&a.

 

其实,指针也是地址和内容组成的,通常使用的是一级指针,如定义一个一级指针int*p1;

定义一个二级指针int **p2; 有多少个*就代表多少级。而p2要获得p1的地址和平常操作一样,即p2=&p1;

 

这个*符号有几种意思的,其中有两种意思,*(如*p)是根据得知的地址访问变量存储内容,而(type *)(如int *p),是定义指针.。下面有个例子

 

int a = 1;

int *p = &a;

int **pp = &p;

 

*p的值大家都知道是1,那么**pp的值是什么呢?呵呵,同样也是1,那么我们来分析下为什么是1?

 

上面说过 *其中有“根据得知的地址访问变量存储内容”的意思。

 

**pp 其实是这样写的:*(*pp),可以省略。

 

*(*pp)到底是啥? 画个图一目了然,

 

 


其实,按推理可知道,

* x ,就代表 x所存储地址的内容,

 

那么 *pp 意思就是 p的地址的内容,内容是a地址

 

 

*(*pp) 其实是 *(a地址), 那么a的地址的内容是1,也就是说*(*pp) = =1,

即 **pp ==1。

其实 指针并不难理解,画一个图后,一目了然,不管是多少级的指针。

 

 

 

 

0 0
原创粉丝点击