设有定义int m=2,n=5,*p=&n;则语句“m=*p;”的结果是().A) 指针p指向mB) 变量m的值变为5C) 变量n的值变为2D) 指针p指向m,同时变量m的值变为5B和D有什么区别啊?D错哪了?
问题描述:
设有定义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的地址.