您的位置:首页 > 其它

关于指针的一些理解

2016-05-07 23:09 351 查看
1. 指针的定义
指针保存的是所指向的对象的地址。
int a = 3;
int *p = &a; // 定义一个指向整形数a的指针p,此处,int代表p是指向一个整形数的指针,*表明
// 当前定义的是一个指针,p的值为&a,即a的地址
上面的指针也可以这样定义
int *p;
p = &a;


2. 指针的指针
同理,我们可以定义一个指向指针的指针, 它保存的是所指向的指针的地址
int a = 3;
int *p = &a;
int **q = &p; //**说明是指向指针的指针


3. 指针内容的读取
上面的程序中,指针p的值是a的地址,我们想通过p来得到a的值,则用*p; 通过q来获取a的值,则用**q。
printf("a's address is: %p.\n", &a);
printf("p's value is: %p.\n", p); //地址的占位符都是%p
printf("p 指向的对象的值: %d.\n", *p);
printf("p's address is : %p.\n", &p);
printf("q's value is: %p.\n", q);
printf("q 指向的指针的值: %p.\n", *q);
printf("q 指向的指针指向的对象的值: %d.\n", **q);
上面代码的输出:
a's address is: 0x7fff5bce5a9c.
p's value is: 0x7fff5bce5a9c.
p 指向的对象的值: 3.
p's address is : 0x7fff5bce5a90.
q's value is: 0x7fff5bce5a90.
q 指向的指针的值: 0x7fff5bce5a9c.
q 指向的指针指向的对象的值: 3.

实际上就是说:
a == *p == **q;
&a == p == *q;
&p = q;

ID:qpa
地址:&q &p&a
值:&p &a 3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  地址 指针