| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 580 人关注过本帖
标题:如何理解运行结果是8?
只看楼主 加入收藏
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
结帖率:85.29%
收藏
已结贴  问题点数:10 回复次数:5 
如何理解运行结果是8?
#include <stdio.h>
#include <stdlib.h>

int main()
{int k=2,m=4,n=6,*pk=&k,*pm=&m,*p;
 *(p=&n)=*pk*(*pm);
 printf("%d\n",n);  
  system("PAUSE");   
  return 0;
}
如何理解运行结果是8? 主要是对于这个表达式*(p=&n)=*pk*(*pm); 没有很好的理解。
搜索更多相关主题的帖子: system return 表达式 
2011-06-23 19:08
cxs365
Rank: 2
等 级:论坛游民
帖 子:32
专家分:30
注 册:2011-5-6
收藏
得分:2 
int k=2,m=4,n=6,*pk=&k,*pm=&m,*p;//*pk = 2,*pm = 4
*(p=&n)=*pk*(*pm); //*pk*(*pm)-->2*4=8

每天前进一小步!
2011-06-23 20:02
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 2楼 cxs365
这个我知道呀,我只是不知道:程序要打出来的是n, *(p=&n)是等于8我知道的,为什么最后n 也变成了8?
2011-06-23 20:09
cxs365
Rank: 2
等 级:论坛游民
帖 子:32
专家分:30
注 册:2011-5-6
收藏
得分:3 
把n的地址给了p,所以p就指向了n。*p=8,所以n=8

每天前进一小步!
2011-06-23 21:24
hugh浪迹
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2011-6-17
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <stdlib.h>


 int main()

 {int k=2,
      m=4,
      n=6,
      *pk=&k,     //pk指针指向了k的地址,因此*pk=2
      *pm=&m,     //pm指针指向了m的地址,因此*pm=4
      *p;  
      *(p=&n)=*pk*(*pm);  /*这个式子等同于*(p=&n)=(*p)*(*pm)
                            先计算括号内的式子 p=&n代表p指针指向了n的地址。又知道*pm=4,*pk=2,
                            因此 (*p)*(*pm)的值为8
                            最后*(p=&n)=*pk*(*pm)代表将 (*p)*(*pm)的值赋给指针p所指向的数字,也就是赋给n
                            所以n=8.*/
      printf("%d\n",n);  
      system("PAUSE");    
      return 0;

 }
2011-06-24 12:06
lxh3319
Rank: 2
等 级:论坛游民
帖 子:29
专家分:11
注 册:2011-6-20
收藏
得分:2 
p是指向n的地址,*p的值发生改变,对应的n也变了 。
2011-06-24 22:51
快速回复:如何理解运行结果是8?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016255 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved