首页 > 试题广场 >

给出以下定义: Char x[]=”abcdefg”; Ch

[单选题]

给出以下定义:

Char x[]="abcdefg";
Char y[]={'a','b','c','d','e','f','g'};
则下列描述正确的是()
  • 数组X和数组Y等价
  • 数组X和数组Y的大小相同
  • 数组X的sizeof运算值大于数组Y的sizeof运算值
  • 数组X的sizeof运算值小于数组Y的sizeof运算值
字符串结尾有一个结束符号
发表于 2018-10-09 10:18:26 回复(0)
更多回答
推荐
选C,x如此定义会在后面添加\0,所以x比y多一个结束符号
编辑于 2017-03-18 08:51:52 回复(0)
char x[]="abcdefg"等价于char x[]={'a','b','c','d','e','f','g','\0'}
发表于 2017-02-08 21:09:07 回复(1)

发表于 2019-03-06 20:42:04 回复(14)
C 字符串以\0结尾,多占一个空间
发表于 2017-03-20 23:32:15 回复(0)
这题很有歧义,不知道是用sizeof求大小还是用strlen求长度,如果是strlen求长度那y绝对大于等于x,如果是sizeof求大小那肯定是x大于y了。
发表于 2017-08-16 09:54:54 回复(2)

在C语言中,字符串以'\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。

发表于 2020-05-26 18:25:22 回复(0)
在数组y中未添加'\0'时,会有警告,而且算出来的23,猜测可能是在y在一直往后找,在内存中找到第一个'\0'算出来的。

加上'\0'后算出来的就是7了


发表于 2022-08-08 14:19:03 回复(0)
8
7
14
14
joshua@joshua:~/c-file$ more charArr.c
#include <stdio.h>
#include <string.h>

int main()
{
char x[] = "abcdefg";
char y[] = {'a','b','c','d','e','f','g'};

printf("%ld\n",sizeof(x));
printf("%ld\n",sizeof(y));

printf("%ld\n",strlen(y));
printf("%ld\n",strlen(y));

}

发表于 2017-08-25 19:03:00 回复(3)

在y数组末尾中添'\0',x和y的长度才相等
编辑于 2020-10-17 14:04:28 回复(0)
选C
发表于 2020-08-31 11:10:07 回复(0)
char x[]="abcdefg";
这在Java编译也通不过啊
发表于 2018-09-04 09:49:22 回复(3)
C++练习里答案是D,数据结构里面答案是C,醉了
发表于 2017-07-02 23:23:06 回复(1)
1、\0 的意思是 ASCII 值为 0 的字符。它的意义是“字符串结束符 ”。 2、例如,一个字符串 "Hello" ,它是由字符 H,e,l,l,o,\0, 6 个字符在内存中连续存放的。当程序遇见第一个 \0 时就会认为该字符串结束。
发表于 2017-05-22 18:03:14 回复(0)
长度应该不同,字符串还有结束符/0,单个字符没有
发表于 2017-03-19 12:14:25 回复(0)
/0
发表于 2017-01-10 08:49:07 回复(0)
Char xI="abcdefg"; Charyl=f'a','b','c','d','e',f,'g'};
发表于 2023-11-03 11:26:07 回复(1)
有用欢迎点赞关注呀
根据给定的代码,可以分析出:

x是字符数组,元素类型是char,元素初始化为"abcdefg"。

y是字符数组,元素类型是char,元素初始化为{'a','b','c','d','e','f','g'}。

结合sizeof的运算规则,可以得出:

A) 数组X和数组Y不等价,x中的元素是字符串常量,y中的元素是字符常量。

B) 数组X和数组Y的大小相同,都包含7个元素。


对于C和D
数组X的sizeof会包含结束符'\0',因此会大于数组Y的sizeof。
数组X的sizeof应该小于数组Y。因为字符串常量包含结束符'\0'。

所以,正确的选项是C。

数组X和数组Y的大小相同,但X的sizeof运算结果会大于Y,因为X中的元素是字符串常量,包含结束符。

发表于 2023-09-13 13:17:17 回复(1)
这个在Java直接报错了,Java里面出C的题不太对吧
发表于 2022-04-28 19:06:00 回复(0)
双引号结尾有‘\0’
发表于 2022-04-27 01:14:43 回复(0)
答案都挺好的,再补充一点:判断一个字符串是否结束的标志就是看是否遇到‘\0’,如果遇到‘\0’,则表示字符串结束
发表于 2022-04-19 09:33:05 回复(0)
C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
strlen(y),不同编译器是可能得到不同的结果的...

发表于 2020-03-08 16:24:09 回复(0)