已知int a, *p=&a; 则下列函数调用中错误的是 (A) scanf(“%d”, &a); (B) scanf(“%d”, p); (C) printf(
展开全部
做题的话选 D。
先说AC. scanf("%d", &a); printf("%d", a) 这两个不用怀疑,只要上过机就知道。
B,没有问题。因为p=&a即p已经接收了a的地址,所以scanf("%d", p)就做到了把a的地址传递给scanf函数,运行时输入的数值会正确存到a那里,没有问题。
D,在语义上就有问题,显示a可用printf("%d",*p),而显示p本身可用printf("%p", p)但几乎没实际意义。更深入的讨论不展开了。
不得不提scanf调用的较奇怪地方,要用取址运算符('&'),而printf不用。如果哪天用scanf忘了用'&',就会发现结果出问题了。初学只需记得scanf调用几乎一定要用'&',只有字符串不用就够了。 至于其原因,详细解释的话涉及到C函数的本质,等到学完函数和指针就明白了。
先说AC. scanf("%d", &a); printf("%d", a) 这两个不用怀疑,只要上过机就知道。
B,没有问题。因为p=&a即p已经接收了a的地址,所以scanf("%d", p)就做到了把a的地址传递给scanf函数,运行时输入的数值会正确存到a那里,没有问题。
D,在语义上就有问题,显示a可用printf("%d",*p),而显示p本身可用printf("%p", p)但几乎没实际意义。更深入的讨论不展开了。
不得不提scanf调用的较奇怪地方,要用取址运算符('&'),而printf不用。如果哪天用scanf忘了用'&',就会发现结果出问题了。初学只需记得scanf调用几乎一定要用'&',只有字符串不用就够了。 至于其原因,详细解释的话涉及到C函数的本质,等到学完函数和指针就明白了。
展开全部
答案:D
分析:p是指针变量,输出用格式字符%d,两者相冲突!
分析:p是指针变量,输出用格式字符%d,两者相冲突!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已知int a, *p=&a; 则下列函数调用中错误的是
(A) scanf(“%d”, &a);
(B) scanf(“%d”, p);
(C) printf(“%d”, a);
(D) printf(“%d”, p);
D是错的,改为printf(“%d”, *p);
指针名p没有意义
(A) scanf(“%d”, &a);
(B) scanf(“%d”, p);
(C) printf(“%d”, a);
(D) printf(“%d”, p);
D是错的,改为printf(“%d”, *p);
指针名p没有意义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个错了,不能直接输入并且改变指针p的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A 10 B 20 C 不确定值 D 程序有错误 完整程序的话,D 因为A是未定义的符号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询