若有说明: int *p,m=5,n;以下正确的程序段是()

A)p=&n; scanf("%d",&p);B)p=&n; scanf("%d",*p);C)scanf("%d",&n); *p=n;D)p=&n; *p=m;
2025-02-23 21:42:16
推荐回答(3个)
回答1:

D是正确的
A,B中 p是n的地址 那么如果要输入n 应该是scanf("%d", p);
C中 p还没定义 给*p赋值就是给一个没有开辟的地址赋值了
D是正确的 意思是p为n的地址,将p地址上的数变成m, 等价于n=m;

回答2:

A和B中scanf函数要传的参数是地址,需要int*类型的参数,但是A中*p表示是int型,&p表示int **类型,所以不符合。
C、中*p指针没有初始化,它还没有存储变量n的地址,和n没有关联起来,直接把n的值给*p。它是无法接受的。

回答3:

A