如题所述
第1个回答 2015-11-30
选择D。
因为y[]的最后一位存'/0'表示结束,所以y的长度大于X
其中/0表示字符串终止, 终止符是编译时自动加上的, 然后一个字符一个字符地复制到s所指的内存区域。因此定义字符串数组时, 其元素个数至少应该比字符串的长度多1。追答
因为y[]的最后一位存'/0'表示结束,所以y的长度大于X
其中/0表示字符串终止, 终止符是编译时自动加上的, 然后一个字符一个字符地复制到s所指的内存区域。因此定义字符串数组时, 其元素个数至少应该比字符串的长度多1。追答
答案是
追问是c
追答哦
我记得是D啊
好吧,学习了
追问(^-^)
第2个回答 2015-11-30
选C
比如说char a[]={'a','b','c'} 这是一个字符数组,占3个字节。 char a[]="abc" 则不同,它是一个字符串,最后还有一个'\0'结束符,占4个字节追问
比如说char a[]={'a','b','c'} 这是一个字符数组,占3个字节。 char a[]="abc" 则不同,它是一个字符串,最后还有一个'\0'结束符,占4个字节追问
但是,他问的不是长度吗?
长度和大小是不同的概念啊
第3个回答 推荐于2016-06-01
选C
char x[]="abcdefg" 后面还跟着一个'\0';所以占了8个字节;
char y[]={'a','b','c','d','e','f','g'}只占7个字节;
其实说确切点应该是字符数组所占空间
但是如果你想获得字符串的长度,其实下面的那种是不定的,你要看看内存中到哪位是\0追问
char x[]="abcdefg" 后面还跟着一个'\0';所以占了8个字节;
char y[]={'a','b','c','d','e','f','g'}只占7个字节;
其实说确切点应该是字符数组所占空间
但是如果你想获得字符串的长度,其实下面的那种是不定的,你要看看内存中到哪位是\0追问
但是对于长度来说,结束符不是不算在内吗?
追答算啊,所以x比y多占一位
追问那大小又是什么概念?
追答一个是数组在内存中的大小,一个是字符串的长度。输出的那个14是不定的(是大于等于7的)
哦?为什么没有结束符的长度是不变的?谢谢
哦,知道了,谢谢
本回答被提问者采纳