问题
单项选择题
有以下程序:
#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正确。