用scanf输入字符串

chars[10];scanf("%s",s);改为scanf("%s",&s);也正确,为什么?求解释... char s[10];
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
求解释
展开
 我来答
百度网友12db346
高粉答主

2018-11-03 · 关注我不会让你失望
知道小有建树答主
回答量:762
采纳率:100%
帮助的人:21.7万
展开全部
  1. s与&s都表示地址,且值相等。

  2. s与&s类型不一样,s的类型为char *,&s的类型为char (*)[10],即指向一行有10个字符的指针。

  3. 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char *)&s);

扩展资料:

  1. scanf()是C语言中的一个输入函数。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

  2. scanf的发展:使用scanf函数进行输入,必须指定输入的数据的类型和格式,不仅繁琐复杂,而且很容易出错。C++保留scanf只是为了和C兼容,以便过去用C语言写的程序可以在C++的环境下运行。C++的编程人员都愿意使用cin进行输入,很少使用scanf。

参考资料:百度百科——scanf

sun_siliang
2011-05-27 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4637万
展开全部
1 s与&s都表示地址,且值相等。
2 s与&s类型不一样,s的类型为char *,&s的类型为char (*)[10],即指向一行有10个字符的指针。
3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char *)&s);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfustudio
2011-05-27 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3759万
展开全部
数组名是数组的首地址
取地址后还是首地址(数组的特性,函数名也一样)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
471003247
2011-05-27 · TA获得超过343个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:145万
展开全部
您好
scanf函数中后面的参数放的是变量的地址,由于字符串的名字是字符串的地址,所以可以。
因为在c和c++中,字符串数组的名字就是代表了该字符串的首地址,也就是说,当你在使用scanf("%s",s)的时候,同样是在字符数组的第一个元素前面(其实也就是s)处开始记录值的,您可以理解为s = &s[0]=&s,当然这只限于字符串数组,当其他数据类型时是不可以的。
如果楼主不明白的话,可以试着在编译器中使用调试,然后将&s和s输入里面,查看,就可以知道。

//if any question ,call me back!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友42b0877
2011-05-27 · TA获得超过314个赞
知道小有建树答主
回答量:586
采纳率:0%
帮助的人:374万
展开全部
数组的名字本来就是个指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式