答案是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'也一同拷贝。
楼主首先要明白的是什么是长度。数组元素的个数称之为数组的长度。
现在再看看问题 第一个是 字符串,第二个是字符数组 ,字符串以'\0'为结束符号,字符数组不用。
那就很明白了。B 对。
要说明的是,虽然他们长度相同,不过占的内存字节数是不一样的,第一个占7个字节(后面的'\0'占一个。)第二个占6个字节。
"ABCDEF”;是字符串,字符串默认是有字符串结束符的。
所以选d
要不这样理解吧
首先a作为字符串长度为6;
作为字符数组有7个元素,包含\0,a数组的长度为7;
b是字符数组有6个元素,不是字符串,b数组的长度为6;
选D
#include
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