一个关于C 指针的问题.

来源:百度知道 编辑:UC知道 时间:2024/05/19 03:28:30
int i=10,*p;
*p=&i;
printf ("p=%d\n",p);
printf ("*p=%d\n",*p);
为什么输出的值会不一样,问题:
1、到底p是指针,还是*p是指针。
2、如果其中一个是指针,那另一个又是什么呢。没求搞懂。
3 、*p=&i;和 p=&i;是不是同一个意思哟。

int *p = &i;
等价于int *p;
p= &i;
记住就好了

而*p= &i是把i的地址给p指向的元素。
当然了,p是指针。
指针就是一个存放别人地址的量,没什么特殊的。它本身也有地址。
变量的值和地址是不同的概念
3 、*p=&i; 是把i的地址赋给p指向的值,这个一般是错误的。
和 p=&i 是把i的地址给p。

*p是值,p是这个值的地址
不是一个意思
*p=&i是把i的地址给*p
p=&i是把i的地址给p,这时候*p==i

p是i的地址,表示的是i在内存的位置运行时间不同的话结果很有可能也不同...*p是i值,相当与对i的引用..

你要记住 *p 和p不同
上面一个是赋值给指针 一个是赋值给指针变量 你说会一样吗?

p是指针,*p是指针变量。
指针的值是内存地址。而指针变量的值是程序平常输入输出的值。
就好像,p是一个房子的门牌,*p是房子里面的人。
理论上两个都有值,但是,他们的值意义不同。p的值是门牌号码,*p是住在里面的人的信息。
问题三,他们不是同一个意思。
&i是地址的值,就好像是i住的房子的门牌。
前者是把门牌号码放在屋子里面,
后者是把门牌号码放在门牌力面。

第一个printf输出的是p的值,它是一个地址,也就是i的地址
第二个printf输出的是p所指向变量i的值,也就是10
所以说,p是指针变量,*p是它指向变量的值。