设有定义int m=2,n=5,*p=&n;则语句“m=*p;”的结果是().

问题描述:

设有定义int m=2,n=5,*p=&n;则语句“m=*p;”的结果是().
A) 指针p指向m
B) 变量m的值变为5
C) 变量n的值变为2
D) 指针p指向m,同时变量m的值变为5
B和D有什么区别啊?D错哪了?

一步步分析:
*p = &n;为定义指针p,同时指向n的地址;
m = *p; 为对m重新赋值,此时*p为对地址&n取值,即n的值5,所以m值变为5;
但此语句不是指向操作,本质上说可以是int = int操作,所以p的指向还是n的地址.