c语言,p指向i,则*p = i,是指内容一样?还是完全等价?*p和i的地址相同吗?

如题所述

p 是一个指针,i 是一个变量;两者不能说是内容一样或是完全等价。当指针p 指向 i 的地址,就像是变量i 的地址有了个名字,就像是每个人都有不同的名字一样,但是身份证编号是唯一的(就像是变量i 的地址)。
比如:
#include<stdio.h>
int main()
{
int i = 10;
int * p = &i;
int * q = &i;

* p = 20;
printf("%d\n", i);
* q = 30;
printf("%d\n", i);
return 0;

}
此时输出20 30;因为指针p 和q 都指向了变量i 的地址,对p 和 q 的值修改,实际就是对i 的值修改。但是i 的地址并没有改变。举个例子,地址就像是一个箱子,i 则是箱子里面装的东西,指针p 和q 则可以对箱子里面的东西(i)进行修改,但并不会改变箱子本身。
//这只个人对指针的理解,希望对你有帮助。不好意思,晚了点,因为好久没有进百度空间了来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-23
完全等价,因为数据是储存在内存中的,而p就是i的地址!

*p只是解析这个地址,其实是一样的。
第2个回答  2012-12-23
*p = i;作用是将i的值写入p所指的内存区域,p必须先赋值,若前面有p=&i,则p所指的地址就是i的地址,否则不是。另外,*p不是地址,是取p所指地址的内容本回答被提问者采纳
第3个回答  2012-12-23
P是指指针,P指向的是i的地址。
*p的值是i,和i的地址是不同的。
第4个回答  2012-12-23
int i=5
int *p=&i
首先说i和p都是变量,所以存在不同的地方
P中存储的是变量i的存储地址
而*P找到了i的内容,所以&i==&(*p)的呵呵
相似回答