用scanf输入字符串

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

2018-11-03 · 关注我不会让你失望
知道小有建树答主
回答量:762
采纳率:100%
帮助的人:20.4万
展开全部
  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

TableDI
2024-07-18 广告
在Excel中,字符串匹配函数主要用于查找和定位特定字符串在文本中的位置或进行替换操作。常用的字符串匹配函数包括FIND、SEARCH、SUBSTITUTE和REPLACE等。FIND和SEARCH函数用于查找字符串的位置,而SUBSTIT... 点击进入详情页
本回答由TableDI提供
sun_siliang
2011-05-27 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4484万
展开全部
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%
帮助的人:3692万
展开全部
数组名是数组的首地址
取地址后还是首地址(数组的特性,函数名也一样)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
471003247
2011-05-27 · TA获得超过343个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:143万
展开全部
您好
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%
帮助的人:370万
展开全部
数组的名字本来就是个指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式