用scanf输入字符串
chars[10];scanf("%s",s);改为scanf("%s",&s);也正确,为什么?求解释...
char s[10];
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
求解释 展开
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
求解释 展开
展开全部
s与&s都表示地址,且值相等。
s与&s类型不一样,s的类型为char *,&s的类型为char (*)[10],即指向一行有10个字符的指针。
在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char *)&s);
扩展资料:
scanf()是C语言中的一个输入函数。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
scanf的发展:使用scanf函数进行输入,必须指定输入的数据的类型和格式,不仅繁琐复杂,而且很容易出错。C++保留scanf只是为了和C兼容,以便过去用C语言写的程序可以在C++的环境下运行。C++的编程人员都愿意使用cin进行输入,很少使用scanf。
参考资料:百度百科——scanf
TableDI
2024-07-18 广告
2024-07-18 广告
在Excel中,字符串匹配函数主要用于查找和定位特定字符串在文本中的位置或进行替换操作。常用的字符串匹配函数包括FIND、SEARCH、SUBSTITUTE和REPLACE等。FIND和SEARCH函数用于查找字符串的位置,而SUBSTIT...
点击进入详情页
本回答由TableDI提供
展开全部
1 s与&s都表示地址,且值相等。
2 s与&s类型不一样,s的类型为char *,&s的类型为char (*)[10],即指向一行有10个字符的指针。
3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char *)&s);
2 s与&s类型不一样,s的类型为char *,&s的类型为char (*)[10],即指向一行有10个字符的指针。
3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char *)&s);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组名是数组的首地址
取地址后还是首地址(数组的特性,函数名也一样)
取地址后还是首地址(数组的特性,函数名也一样)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好
scanf函数中后面的参数放的是变量的地址,由于字符串的名字是字符串的地址,所以可以。
因为在c和c++中,字符串数组的名字就是代表了该字符串的首地址,也就是说,当你在使用scanf("%s",s)的时候,同样是在字符数组的第一个元素前面(其实也就是s)处开始记录值的,您可以理解为s = &s[0]=&s,当然这只限于字符串数组,当其他数据类型时是不可以的。
如果楼主不明白的话,可以试着在编译器中使用调试,然后将&s和s输入里面,查看,就可以知道。
//if any question ,call me back!!!
scanf函数中后面的参数放的是变量的地址,由于字符串的名字是字符串的地址,所以可以。
因为在c和c++中,字符串数组的名字就是代表了该字符串的首地址,也就是说,当你在使用scanf("%s",s)的时候,同样是在字符数组的第一个元素前面(其实也就是s)处开始记录值的,您可以理解为s = &s[0]=&s,当然这只限于字符串数组,当其他数据类型时是不可以的。
如果楼主不明白的话,可以试着在编译器中使用调试,然后将&s和s输入里面,查看,就可以知道。
//if any question ,call me back!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组的名字本来就是个指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询