C语言中指针的地址问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 01:52:51
C语言中指针的根地址和存储的地址什么时候相同?什么时候不同?
比如定义*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相等。