C语言,为什么字符串类型的数组,可以用数组名对数组进行整体输入个输出,请举例

如题所述

咱们分析下:
字符数组中如果保存的是字符串,比如
char tar[20] = "hello"; 要知道字符串默认的是以'\0'结尾的,所以这里隐含的最后还有一个'\0'

而printf("%s", tar); 这个语句,在执行的时候,是从tar指向的字符开始输出,一直输出直到遇到第一个'\0'为止。 所以会输出hello.

而如果tar[20] = {'h', 'e', 'l', 'l', 'o'};
那么这个时候printf("%s", tar);同样的还是从第一个元素开始输出,还是到‘\0'为止,但因为这里没有'\0'就还接着往后输出,而之后的内容,已经不再是该数组的空间,所以将会输出不可预测内容了。追问

我的意思是为何字符串可以,其他类型就不可以用数组名输入输出

例如double

追答

其他类型的话,是因为printf没有那么实现:一直printf一直到遇到'\0'

而不这么实现的原因应该有,double或者其他类型,通常意义上,没有定义”结束符“

int tar[20] = {1,2,3}
printf("%d", tar[1]);输出的就是第二个元素:2
printf("%d", tar); 其实输出则是tar整形数组的第一个元素的首地址

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-09
int a; scanf("%d", &a);这里需要地址符&
char str[10]; scanf("%d", str); 可以理解为“地址”追问

那输出可以举例不

追答

printf("%d,%s\n",a, str);

第2个回答  2018-06-17
最佳答案好像有错,tar s[20]={'c','h'}
会把后边未定义的18个元素自动初始化为空字符。可以直接用字符串输出格式输出

相关了解……

你可能感兴趣的内容

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