首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2014-01-23 
有关一段代码的疑问(指针的)#includestdio.h int main() { int m1,n2,*p&m,*q&n,*r rppqqr p

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

#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;

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

热点排行