永发信息网

已知int a, *p=&a; 则下列函数调用中错误的是 (A) scanf(“%d”, &a); (B) scanf(“%d”, p); (C) printf(

答案:6  悬赏:10  手机版
解决时间 2021-03-19 17:56
  • 提问者网友:雾里闻花香
  • 2021-03-19 13:22
已知int a, *p=&a; 则下列函数调用中错误的是 (A) scanf(“%d”, &a); (B) scanf(“%d”, p); (C) printf(
最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-03-19 13:40
做题的话选 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函数的本质,等到学完函数和指针就明白了。
全部回答
  • 1楼网友:佘樂
  • 2021-03-19 17:59
第二个错了,不能直接输入并且改变指针p的地址
  • 2楼网友:孤老序
  • 2021-03-19 17:09
A 10 B 20 C 不确定值 D 程序有错误 完整程序的话,D 因为A是未定义的符号
  • 3楼网友:封刀令
  • 2021-03-19 16:50
答案:D
分析:p是指针变量,输出用格式字符%d,两者相冲突!
  • 4楼网友:逐風
  • 2021-03-19 15:53
B
  • 5楼网友:怙棘
  • 2021-03-19 14:30
已知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没有意义
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯