如何理解运行结果是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); 没有很好的理解。
程序代码:
#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;
}