关于C++指针的问题。

在学习指针时,我遇到一个头疼的问题。。。书上说,指针是一个变量,可以存储指针指向的内存的地址。那就是说,指针本身也占有内存。。。。那如果我用&符号去运算指针,又能得到该指... 在学习指针时,我遇到一个头疼的问题。。。
书上说,指针是一个变量,可以存储指针指向的内存的地址。
那就是说,指针本身也占有内存。。。。
那如果我用&符号去运算指针,又能得到该指针的地址。。。
这个时候指针的地址是不是又占了一个内存。。
这样下去,是不是可能造成一个内存中的数据导致内存被用光?

。。是不是我想得太激进了。。。
展开
 我来答
百度网友2018359
2016-06-19 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1390万
展开全部
是你想多了
指针实际上也是一个变量, 也占用内存, 你用&取指针变量的地址, 没问题, 它并不会给 "&指针变量" 这个东西分配内存, 只是把指针变量的地址值给你而已.
这样想吧, 指针实际上也是一个变量, 只不过它的值是一个地址, 不是一个整型, 字符型....
但是,但是,但是(重要的事说三遍) 指针变量指向的地址是有具体类型的, 比如整型, 字符, 字符串, 甚至结构体, 类实例, 都可以
所以才有int * ,char * ,CWnd* ,指向指针的指针 等等
喝了点酒, 话太多了, sorry
再补充一下, 指针定义时也可以不具体指向某一种类型: void* p;
追问
哈哈
pnum = #

ppnum = &pnum;
pnum指向了变量num的地址,然后pnum有一个地址值,需要开辟一个内存存储这个地址。

然后开辟的内存又有一个地址值,如果我再拿指针指向这个地址,等于又需要一个内存地址。
但是我去试的时候,却不让我用指针指向指针的地址。
感觉这是不是C++的一个规则啊?
追答

但是我去试的时候,却不让我用指针指向指针的地址。


可以的,就是指向指针的指针, 有点类似于链表


某些IDE中 int* ppa=&pa会报警告错误, 这是因为int* ppa表示ppa指针指向的内容是一个int类型, 但在上述代码中ppa指向的却是一个指针类型

sciapex
2016-06-19 · 超过82用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:77%
帮助的人:35.1万
展开全部

这不是递归,你要清楚一个指针变量:

  1. 指针变量长度:在内存32位编译分配4位地址的内存长度,64位编译是8位地址的内存长度

  2. 指针变量内容:这个内存存储任何类型的指针值,数据类型跟声明的类型关联


通过*来获取指针的内容,不会出现无限指下去的情况的

比如

int a;

int *p1 = &a;

int *p2 = &p1; //wrong

int **p3 = &p1;  //right, p1's point

//**p3 == *p1 == a;

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式