如何理解运行结果是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; }