用scanf输入字符串
chars[10];scanf("%s",s);改为scanf("%s",&s);也正确,为什么?求解释...
char s[10];
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
求解释 展开
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
求解释 展开
6个回答
展开全部
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
展开全部
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!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组的名字本来就是个指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询