在C语言中char a[ 50];用scanf()输入字符数组加不加&符号,是scanf("%s",&a)还是scanf("%s",a)

 我来答
terranlong
2012-08-09 · TA获得超过7293个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3947万
展开全部
应该是 scanf("%s",a);
因为 a 其实是个地址,也就是数组第一个元素a[0]的地址,因此跟 scanf("%s", &a[0]); 是一样的,这样应该清楚一点吧,不懂可追问
追问
我也这样认为当a为数组名时,应该为scanf("%s",a)但是在VC编译器上这scanf("%s",&a)也正确,怎么回事?
追答
这就是数组跟指针的区别了,虽然数组跟指针非常像,但就有区别
数组名a是一个地址,也就是a[0]的地址,如前面所说的。另外,取a的地址其实也就是取a[0]的地址,因此&a和&a[0]是一样的
指针p也是一个地址,但p和&p完全是两码事,是两个不同的东西,前者是指针指向的地址,后者是指针的地址
七夜少侠
2012-08-09 · TA获得超过516个赞
知道小有建树答主
回答量:494
采纳率:0%
帮助的人:244万
展开全部
scanf(" %s ",a);
&是取地址符,表示这里是存储一个字符的地址 。
但在这里 a 作为一个数组名,它是一个常量指针,表示的也就是一个地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GMshuS
2012-08-09
知道答主
回答量:28
采纳率:100%
帮助的人:14.2万
展开全部
是scanf("%s",a),a表示的就是数组的地址,不需要用&进行取地址了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
四月黄梅天
2012-08-09
知道答主
回答量:11
采纳率:0%
帮助的人:4.5万
展开全部
是scanf("%s",a),a表示的就是数组的地址,不需要用&进行取地址了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CT_36
2012-08-09 · TA获得超过482个赞
知道小有建树答主
回答量:695
采纳率:0%
帮助的人:183万
展开全部
都是要& 的 表示地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式