scanf函数 字符串输入问题

书上有这样一段代码
char c[];
scanf("%s",c);
输入的时候把字符串带如字符数组,不需要'&'么?
scanf("%s",c);

scanf("%s",&c);
两者之间什么区别?
是不是只有字符串比较特殊,带入时才不需要'&'?

1. scanf在用%s时,是指输入一个字符串,不用&,因为字符数组的名字本身就代表是这个数组的首地址,已经是地址了,再加&就错误了。
2.用%c时,是输入一个字符,那么这个字符必须加&,才能放入相应字符变量的地址里,这是不加&,也错了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-14
分两种情况来说明。
1 输入字符。
char c;
scanf("%c",&c); //c定义为字符变量,格式符用%c,前面有&,只能接收一个字符。

2 输出字符串。
char c[81];
scanf("%s",c); //c定义为字符数组,格式符用%d,前面没有&,至多接收80个字符。本回答被提问者采纳
第2个回答  2011-08-14
第一个问题:
scanf 函数后一个参数实际上是地址,
而数组名的真正含义就是一个地址,所以不用加&取地址运算符。

第二个问题:
scanf("%s",&c); //表示你要取C的地址,而c如果是一个变量,就可以取出地址,总之你要明白scanf后一个参数实际上是地址,c 和&c的区别在于,c本身是不是地址。
第3个回答  2011-08-14
我看前面人都给你回答了,我就简介一点。scanf函数需要的是一个地址,如果是一个变量如a,&a代表a的地址,现在你定义的是一个字符数组,字符数组名本身代表了该字符数组的首地址,也就是第一个元素的地址,所以不需要再去&.

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网