有关一段代码的疑问(指针的)
#include<stdio.h>
int main()
{
int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf("%d,%d,%d,%d",m,n,*p,*q);
return 0;
}
这段代码的输出结果是1,2,2,1
我的疑问是,*p=&n,不应该是将n的地址付给了p么?也就是说p存储着n的地址啊。。那为什么最终*p输出的却是数值呢?
[解决办法]
指针类型前边加个*,表示对指针的“解引用”操作,意即取出该指针指向的地址的值
[解决办法]
int n = 2;
int *p = &n; //初始化。对p进行定义并初始化为n的地址,相当于 int *p; p = &n;两条语句
*p = n; //赋值。修改p指向的地址的内容为n;
初始化、赋值,是不同的概念,虽然都是一个等号操作符。