首页 > 试题广场 >

给出以下定义,则正确的叙述为哪一个?

[单选题]
给出以下定义:
char acX[]="abcdefg";
char acY[]={'a', 'b', 'c',  'd', 'e', 'f', 'g'};
则正确的叙述为
  • 数组acX和数组acY等价
  • 数组acX和数组acY占用的内存空间相同
  • 数组acX占用的内存空间大于数组acY
  • 数组acX占用的内存空间小于数组acY
推荐
C
acX 是字符串 系统最后添加"\0"作为结束符
 acY是数组   acY是数组   acY是数组  没有结束符!!!!
编辑于 2016-01-19 13:19:43 回复(7)
ryl头像 ryl
对“abcdefg”, strlen计算长度时认为'\0'到达结尾,因此返回7; 但sizeof计算存贮所需要的大小,\0'占一个位置,因此返回8; 因此数组长度应该是一样的,大小不一样才对
编辑于 2016-03-25 17:35:33 回复(9)
strlen(acX)=7
strlen(acY)=7
sizeof(acX)=8  //字符串以'\0'作为结束标记
sizeof(acY)=7
用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'
而且, sizeof是算符,strlen是函数, 常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度
例如:char ch[] = {'a', 'c', '/0', 'z', '3','d'};     // sizeof(ch) = 6; 而strlen(ch) = 2.
发表于 2016-10-11 10:20:19 回复(0)
NII头像 NII
acX比acY多一个长度,也就是多一个'\0'
发表于 2015-09-12 20:53:07 回复(0)
请问这个长度是指strlen还是sizeof?
发表于 2018-04-20 14:11:36 回复(0)
第一个acX为c风格字符串,系统为其自动添加一个结束字符null。 第二个acY为字符数组,它没有结束字符null。 所以acX.size>acY.size
发表于 2016-01-18 22:38:40 回复(0)

C
数组X比数组Y在尾部多了个'\0'

发表于 2017-04-25 11:31:42 回复(0)
其实这题大家都应该知道啥意思,只是题目说的不清楚,你要求长度的话肯定是相同的,这里的长度大家肯定是strlen求,只是占用的内存不同
发表于 2016-12-21 19:24:57 回复(0)
字符串与字符数组的区别是字符串会在末尾加一个‘\0’
发表于 2015-10-12 16:17:34 回复(0)
不要忘了字符串的结束符'\0'
发表于 2015-07-18 16:18:55 回复(0)
字符串 数组
发表于 2021-03-05 15:18:35 回复(0)
int main()
{
    char c[] = "ab";
    char d[] = { 'a','b' };
    cout << sizeof(c) <<"\n"<< sizeof(d) << "\n" << strlen(c) << "\n" << strlen(d);
}

输出:
3
2
2
14

查手册发现strlen的语法是
size_t strlen( const char *str );

其中,参数str必须是以 Null 结尾的字符串。

所以strlen(d)应该是不合法的。
题目的长度指的应该是sizeof

发表于 2019-10-13 11:28:20 回复(0)
屏蔽此题
发表于 2019-08-28 20:06:53 回复(0)
字符串:系统最后添加"\0"作为结束符
数组:没有结束符
这里考查的应该是内存占用
strlen(acX)=7, strlen(acY)>=7
sizeof(acX)=8, sizeof(acY)=7
发表于 2019-05-08 10:35:31 回复(0)
strlen(acX)=7 strlen(acY)=7 sizeof(acX)=8  //字符串以'\0'作为结束标记 sizeof(acY)=7 用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0' 而且, sizeof是算符,strlen是函数, 常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度 例如:char ch[] = {'a', 'c', '/0', 'z', '3','d'};     // sizeof(ch) = 6; 而strlen(ch) = 2.
发表于 2019-04-18 07:41:54 回复(0)

对于字符数组的strlen和sizeof有不同观点

发表于 2019-04-12 11:09:50 回复(0)
请问大神们,为什么strlen(aj)的结果为14    ???
发表于 2018-05-15 16:54:09 回复(2)
字符串系统会添加/0作为结束符
发表于 2017-11-18 14:01:57 回复(0)
请问这题和为'\0'有什么关系?
发表于 2017-09-07 21:35:48 回复(0)
acX 是字符串 系统最后添加"\0"作为结束符  acY是数组   acY是数组   acY是数组  没有结束符!!!!
发表于 2017-09-06 14:02:23 回复(0)
acX是字符串,最后添加"\0"作为结束符,比数组acY长度大
发表于 2017-08-07 16:03:01 回复(0)