C语言中指针的地址问题
来源:百度知道 编辑:UC知道 时间:2024/05/15 01:52:51
C语言中指针的根地址和存储的地址什么时候相同?什么时候不同?
比如定义*p
什么时候p与&p的值相同?什么时候不同?谢啦~~~~
比如定义*p
什么时候p与&p的值相同?什么时候不同?谢啦~~~~
首先我要指出的是根指针的地址与指针存储的地址一般不可能相同~!(一楼列出的情况除外,将指针的地址赋给一个变量再将变量的地址赋给指针)
举个例子:
int number,*p;
number=1;
p=&number;
你可以这样理解,number 和 *p都是一个整型数据变量,程序在内存中
为它们都保留了一个地址(两个不同的地址),用以存放它们的值,在
number的地址中保存的值是1,在*p的地址中保存的值是number的地址!
你也可以用 &p 求出*p 的根地址。(一般只在二维及以上数组、链表等高级主题中用到指针的根地址)
这个很难相同吧
p是内容,&p是内存地址
比如在0F003FBA储存了数字120
则&p=0F003FBA,*p=120
当然你可以令a=&p
*p=a
那么*p就等于&p了
1楼“lifewifehappy”的说法错误:
则&p=0F003FBA,*p=120 // 错误。如果&p=0F003FBA,则p=120,而不是*p=120
---------------------------------
如果代码中定义了(任意类型)指针p,则当且仅当你进行如下赋值的时候p与&p等值:
p=&p; // 未编译
否则基本不可能使p与&p相等。