关于C++指针的问题。
在学习指针时,我遇到一个头疼的问题。。。书上说,指针是一个变量,可以存储指针指向的内存的地址。那就是说,指针本身也占有内存。。。。那如果我用&符号去运算指针,又能得到该指...
在学习指针时,我遇到一个头疼的问题。。。
书上说,指针是一个变量,可以存储指针指向的内存的地址。
那就是说,指针本身也占有内存。。。。
那如果我用&符号去运算指针,又能得到该指针的地址。。。
这个时候指针的地址是不是又占了一个内存。。
这样下去,是不是可能造成一个内存中的数据导致内存被用光?
。。是不是我想得太激进了。。。 展开
书上说,指针是一个变量,可以存储指针指向的内存的地址。
那就是说,指针本身也占有内存。。。。
那如果我用&符号去运算指针,又能得到该指针的地址。。。
这个时候指针的地址是不是又占了一个内存。。
这样下去,是不是可能造成一个内存中的数据导致内存被用光?
。。是不是我想得太激进了。。。 展开
展开全部
是你想多了
指针实际上也是一个变量, 也占用内存, 你用&取指针变量的地址, 没问题, 它并不会给 "&指针变量" 这个东西分配内存, 只是把指针变量的地址值给你而已.
这样想吧, 指针实际上也是一个变量, 只不过它的值是一个地址, 不是一个整型, 字符型....
但是,但是,但是(重要的事说三遍) 指针变量指向的地址是有具体类型的, 比如整型, 字符, 字符串, 甚至结构体, 类实例, 都可以
所以才有int * ,char * ,CWnd* ,指向指针的指针 等等
喝了点酒, 话太多了, sorry
再补充一下, 指针定义时也可以不具体指向某一种类型: void* p;
指针实际上也是一个变量, 也占用内存, 你用&取指针变量的地址, 没问题, 它并不会给 "&指针变量" 这个东西分配内存, 只是把指针变量的地址值给你而已.
这样想吧, 指针实际上也是一个变量, 只不过它的值是一个地址, 不是一个整型, 字符型....
但是,但是,但是(重要的事说三遍) 指针变量指向的地址是有具体类型的, 比如整型, 字符, 字符串, 甚至结构体, 类实例, 都可以
所以才有int * ,char * ,CWnd* ,指向指针的指针 等等
喝了点酒, 话太多了, sorry
再补充一下, 指针定义时也可以不具体指向某一种类型: void* p;
追问
哈哈
pnum = #
ppnum = &pnum;
pnum指向了变量num的地址,然后pnum有一个地址值,需要开辟一个内存存储这个地址。
然后开辟的内存又有一个地址值,如果我再拿指针指向这个地址,等于又需要一个内存地址。
但是我去试的时候,却不让我用指针指向指针的地址。
感觉这是不是C++的一个规则啊?
展开全部
这不是递归,你要清楚一个指针变量:
指针变量长度:在内存32位编译分配4位地址的内存长度,64位编译是8位地址的内存长度
指针变量内容:这个内存存储任何类型的指针值,数据类型跟声明的类型关联
通过*来获取指针的内容,不会出现无限指下去的情况的
比如
int a;
int *p1 = &a;
int *p2 = &p1; //wrong
int **p3 = &p1; //right, p1's point
//**p3 == *p1 == a;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询