问题 单项选择题

有以下程序:
#inlucde<stdio.h>
main()
int n,*P=NULL;
*p=&n;
printf("input n:");scanf("%d",&p);printf
("output n:");printf("%d\n",p);

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是______。

A.int n,*p=NULL;

B.*p=&n;

C.scanf("%d",&p)

D.printf("%d\n",p);

答案

参考答案:A

解析: *p代表存储单元的值,而&n代表变量n的地址,将一个地址赋给一个值是不正确的,所以选项B是错误的;指针p代表存储单元的地址,前面不需要加&,所以选项C错误;选项D是将一个地址输出,所以也是错误的。除了给指针变量赋地址值以外,还可以给指针变量赋NULL值,所以选项A正确。

单项选择题
判断题