c语言用scanf输入字符串

chara[10];scanf("%s",&a);//这里的&加上为什么不报错scanf("%s",a);... char a[10];
scanf("%s", &a); //这里的&加上为什么不报错
scanf("%s",a);
展开
 我来答
White_MouseYBZ
推荐于2017-09-26 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6693万
展开全部
有了char a[10];,那么a就是这个数组的第一个元素的指针,&a就是这个数组的指针;因为一维数组的第一个元素的指针和这个数组的指针是同一个地址,区别是a+1指向a[1],而&a+1就指向a[10]了(这里已越界了)。但&a和a的"值"是相同的,只是类型不同。C调用函数时,实参的类型都会被强制为形参的类型,scanf("%s", &a)或scanf("%s", a)中要求参数是char *型指针,那么&a尽管是char **类型,但被强行转换为char *型了……
百度网友93d2cf4
2015-07-29 · 超过12用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:22.6万
展开全部
scanf本来就是要加 取地址符& 的 scanf("%s", &a);

printf不加 printf("%s",a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式