读书人

相干一段代码的疑问(指针的)

发布时间: 2014-01-23 14:48:04 作者: rapoo

有关一段代码的疑问(指针的)

#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输出的却是数值呢?
[解决办法]
引用:
Quote: 引用:

p保存着地址,*p就是去这个地址上的内容(值),很正常啊,有什么疑问呢?

p=&n 这是把n的地址给了p,那么对p取内容的时候就是读取n的数值
*p=&n 我理解的是对p读内容的时候读出来的应该是n的地址才对
指针类型前边加个*,表示对指针的“解引用”操作,意即取出该指针指向的地址的值
[解决办法]
int n = 2;
int *p = &n; //初始化。对p进行定义并初始化为n的地址,相当于 int *p; p = &n;两条语句
*p = n; //赋值。修改p指向的地址的内容为n;

初始化、赋值,是不同的概念,虽然都是一个等号操作符。

读书人网 >C语言

热点推荐