首页 > 试题广场 >

下述对C语言字符数组的描述中错误的是()。

[单选题]

下述对C语言字符数组的描述中错误的是()

  • 字符数组可以存放字符串
  • 字符数组中的字符串可以整体输入、输出
  • 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
  • 不可以用关系运算符对字符数组中的字符串进行比较
A正确   char a[]="fsdfsa";或者char a[]={"fsdfsdf"};都是字符数组存放字符串
B正确  因为字符数组中直接使用数组名称时数组会退化为指针而且字符串结尾会有“\0”,指针遇到“\0”会结束输入或者输出。用到的代码是:
char ch[100];  gets(ch); //整体输入puts(ch);整体输出。(同时这里提个醒字符数组可以进行整体的输入输出,但是整型输出是不可以进行的整体输入输出)
C错误 在赋值语句中通过赋值运算符"="对字符数组整体赋值,则就需要用到字符数组名,而对字符数组名进行操作时其会退化为常量指针,而进行赋值时左值必须是可以修改的变量。所以错误。
D正确 数组名会退化为指针,所以比较的其实就是指针所指向的内存地址的大小,这个跟比较字符串的大小没有关系。
在VS2017的程序截图如下:


进行内存分配时先分配高位地址再分配低位地址,所以先定义初始化的字符数组地址一定高,这样比较没有什么实际意义。
编辑于 2018-08-24 12:44:40 回复(0)
只能在初始化中将字符串直接输入字符数组,不能在赋值语句中直接赋值给字符数组字符串
发表于 2018-05-08 02:37:08 回复(0)
只能在初始化中将字符串直接输入字符数组,不能在赋值语句中直接赋值给字符数组字符串
发表于 2021-09-02 09:43:53 回复(0)
必须通过strcpy函数
发表于 2022-04-06 22:29:30 回复(0)
在赋值语句中通过赋值运算符"="对字符数组整体赋值,则就需要用到字符数组名,而对字符数组名进行操作时其会退化为常量指针,而进行赋值时左值必须是可以修改的变量。
发表于 2019-07-07 10:10:12 回复(0)
d选项可以用strcmp但是不能用大于小于来比较
发表于 2021-12-10 22:31:56 回复(0)
parr是一个数组名,数组名是一个不可修改的常量,即指针常量,不可以对它进行修改。
	char c[] = { "hello" };
	c = "world";
	c = { "world" };
下面两行编译报错,表达式必须是可修改的左值。


发表于 2020-05-13 10:42:16 回复(0)
不可以用关系运算符对字符串进行比较,没有意义;
字符数组可以在定义的时候整体赋值,但不可以通过赋值运算符“=”进行赋值;
发表于 2018-06-28 21:56:10 回复(4)
操想岔了
发表于 2018-05-13 10:46:32 回复(0)
只能在初始化中将字符串直接输入字符函数组,不能在赋值语句中直接赋值给字符数组
发表于 2024-04-19 14:53:52 回复(0)

C 选项:

这样是初始化:

int arr1[6] = {0, 0, 0, 0, 0, 212}; // 传统C语法
int arr2[6] = {[5] = 212}; // C99 指定初始化器

这样是赋值(错误的用法):

int arr[10];
arr = {0};
编辑于 2023-02-21 21:50:01 回复(0)
可以初始化,但是后续赋值不行
发表于 2019-03-26 00:04:23 回复(0)
要看清关系运算符,不是strncmp函数
发表于 2019-03-11 19:08:19 回复(0)
11n头像 11n
可以初始化,但是后续赋值不行,审题不清啊
发表于 2018-08-04 20:08:53 回复(0)