若int *p,m=5,n;正确的是( )

来源:百度知道 编辑:UC知道 时间:2024/06/04 20:05:50
A)p=&n;scanf("%d",&p)B)p=&n;scanf("%d",*p);C) scanf("%d",&n);*p=n;D) p=&n;*p=m;为什么选d啊?
若*p,m=5,n=4;经过D) p=&n;*p=m;后n=5吗,为什么/?

A)p=&n;scanf("%d",&p)
p已经是指向n的地址了,因此输入应当是scanf("%d",p);
B)p=&n;scanf("%d",*p);
*p是取出p所指向的地址的值,不是地址了,因此错误!
C) scanf("%d",&n);*p=n
定义了指针,如果要使用必须先赋值,否则指向的是随机地址,不对!
D) p=&n;*p=m;
先将p指向n的地址,*p=m;是将m赋给了p所指的地址的值.也就等于是改变了n的值.

A:p本来就代表地址变量,所以应该scanf("%d",p);

B;*p代表的是n的值,不代表地址,应该;scanf("%d",p);

C;严重错误!指针变量未附值,会给系统带来无法预料的后果!切记!切记!