标题:如何理解运行结果是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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-343805-1-1.html




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

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