首页 > 编程语言 > 详细

c++指向指针的指针

时间:2016-03-17 19:06:49      阅读:158      评论:0      收藏:0      [点我收藏+]

 一直搞不明白,c++中指针到底是个啥东西,今天遇到到c++,指向指针的指针的问题,突然有点开窍了。

举个例子:

int main(int argc, char** argv)
{

int a[5]={1,2,3,4,5};
int *p=a;
int **pointer=&p;
std::cout<<"a="<<a<<std::endl;
std::cout<<"p="<<p<<std::endl;
std::cout<<"&a[0]="<<&a[0]<<std::endl;
std::cout<<"*pointer="<<*pointer<<std::endl;
std::cout<<std::endl;

std::cout<<"poiner="<<pointer<<std::endl;
std::cout<<"&p="<<&p<<std::endl;
std::cout<<std::endl;

std::cout<<"**pointer="<<**pointer<<std::endl;
std::cout<<"*p="<<*p<<std::endl;
std::cout<<"a[0]="<<a[0]<<std::endl;
std::cout<<std::endl;

std::cout<<"&pointer="<<&pointer<<std::endl;

}

运行结果:

技术分享

对于指针来说,用 int *p=a举例子, 这句代码:std::cout<<"p="<<p<<std::endl,输出的是指针p指向的变量的地址,也就是p指针所保存的内容,也就是数组a的首地址,也就是a[0]的地址。所以从运行结果可以看出来,它们的值都是相同的。对于*p来说,这句代码:std::cout<<"*p="<<*p<<std::endl;输出的是p指向的变量所保存的内容,也就是a[0]的内容。

 对于&p,则表示的是指针p自身在内存中的地址。这个地址可被指向指针的指针所指。比如,int **pointer=&p;跟上面一样,pointer指向p指针在内存中的地址,也就是pointer保存p指针在内存中的地址。*pointer则保存p指针所保存的内容,即p指针所指向的a[0]的地址。其实可以这么认为,*pointer也是个地址,这个地址其实就是a[0]的地址。**pointer则是指向a[0] 中的内容。&pointer则是pointer指针在内存中的地址。

 

 技术分享

 一句话,对于一个指针符号来说,它表示的是指向的对象的内从地址,*+指针符号,则表示所指向对象保存的内容。

 

c++指向指针的指针

原文:http://www.cnblogs.com/dfyz/p/5288314.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!