对两个数组a和b进行如下初始化: char a[] = “ABCDEF”; char b[] = {‘A’,‘B’,‘C’,‘D’,‘E’,‘F

则以下叙述正确的是
A) a与b完全相同 B) a与b长度相同
C) a与b中都存放字符串 D) a数组比b数组长度长

答案是D,a数组比b数组长度长

原因:a数组的长度是6,b数组的长度是7。

在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。


扩展资料:

初始化器在C/C99/C++中,初始化器是声明器的可选部分,它由一个'='以及其后的一个表达式(或含有多个以','隔开的带圆括号表达式的单一列表)所组成。

详细说明:

把一个字符串赋值给数组:u4 str1[]={"cxknmsl"};

实际上数组str1在内存中的实际存放情况为: c x k n m s l '\0' 

这后面的'\0'是由C编译系统自动加上的。所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。 

把字符数组str1中的字符串拷贝到字符数组str2中,串结束标志'\0'也一同拷贝。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-16
楼主首先要明白的是什么是长度。数组元素的个数称之为数组的长度。
现在再看看问题 第一个是 字符串,第二个是字符数组 ,字符串以'\0'为结束符号,字符数组不用。
那就很明白了。B 对。
要说明的是,虽然他们长度相同,不过占的内存字节数是不一样的,第一个占7个字节(后面的'\0'占一个。)第二个占6个字节。本回答被提问者采纳
第2个回答  推荐于2018-02-28
"ABCDEF”;是字符串,字符串默认是有字符串结束符的。
所以选d本回答被网友采纳
第3个回答  2019-10-16
要不这样理解吧
首先a作为字符串长度为6;
作为字符数组有7个元素,包含\0,a数组的长度为7;
b是字符数组有6个元素,不是字符串,b数组的长度为6;
选D
第4个回答  2011-01-11
#include<stdio>
void main()
{
int m,n;
char a[]="ABCDEF";
char b[]={'A','B','C','D','E','F'};
m=sizeof(a);
n=sizeof(b);
printf("a 所占字节数 %d,b 所占字节数 %d\n",m,n);
}
所以选D
相似回答