关于指针的一些理解
1. 指针的定义
指针保存的是所指向的对象的地址。
inta=3;int*p=&a;//定义一个指向×××数a的指针p,此处,int代表p是指向一个×××数的指针,*表明//当前定义的是一个指针,p的值为&a,即a的地址
上面的指针也可以这样定义
int*p;p=&a;
2. 指针的指针
同理,我们可以定义一个指向指针的指针, 它保存的是所指向的指针的地址
inta=3;int*p=&a;int**q=&p;//**说明是指向指针的指针
3. 指针内容的读取
上面的程序中,指针p的值是a的地址,我们想通过p来得到a的值,则用*p; 通过q来获取a的值,则用**q。
printf("a'saddressis:%p.\n",&a);printf("p'svalueis:%p.\n",p);//地址的占位符都是%pprintf("p指向的对象的值:%d.\n",*p);printf("p'saddressis:%p.\n",&p);printf("q'svalueis:%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;
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。