首页 > 试题广场 >

下列选项中正确的语句组是()?

[不定项选择题]
下列选项中正确的语句组是( )
  • char s[8]; s = {"Beijing"};
  • char *s; s = {"Beijing"};
  • char s[8]; s = "Beijing";
  • char *s; s = "Beijing";
数组名是一个不可修改的常量。
char s[8]; s={"Beijing"};
char s[8]; s="Beijing";
这两种写法都是错的!因为是先声明了,然后再定义初始化的,这么一来就得修改数组名,而这是不允许的!
但是假如这么写:
char s[8]={"Beijing"};
char s[8]="Beijing";
那就是对的!

编辑于 2018-01-20 10:03:43 回复(4)
数组名是常量吧,是不能修改的左值
发表于 2017-09-05 19:03:14 回复(1)
字符数组初始化有俩种方法:
1.用字符为数组赋初值
2.用字符串常量赋初值,注意字符串用双引号
除此以外,都是错的。
发表于 2017-09-12 17:45:42 回复(0)
char类型的指针,和string用法一样
发表于 2017-09-05 19:57:41 回复(0)

数组名是常量,不可以更改

发表于 2020-04-12 11:04:48 回复(0)

char arr1[8] = "beijing";
char arr2[8] = { "beijing" };
//char arr3[8]; arr3 = "beijing";//报错
//char arr4[8]; arr4 = { "beijing" };//报错
//数组名是一个首元素地址,将一个数赋值给一个地址,错误

char* s1 = "beijing";
char* s2 = { "beijing" };
char* s3;s3 = "beijing";
//char* s4;s4 = { "beijing" };//报错

int a1 = 80;
int a2 = { 80 };
int a3; a3 = 80;
//int a4; a4 = { 80 };//报错

int* b = &a1;
int* c = { &a1 };
int* d; d = &a1;
//int* e; e = { &a1 };//报错
总结一点:对于C而言
对于字符数组的定义,有两种方式:
1、定义变量的同时初始化 type name[] = "value"; type name[] = {"value"};
对于非数组的定义,即其他数据类型(包括指针类型)的变量定义,有三种方式:
1、定义变量的同时初始化 type name = value; type name = {value};

2、先定义变量,再初始化 type name; name = value;

总结一点:对于C++而言
对于字符数组的定义,有两种方式:
1、定义变量的同时初始化 ①char name[] = "value"; ②char name[] = { "value" };
对于非数组的定义,即其他数据类型(包括指针类型)的变量定义,有三种方式:
1、定义变量的同时初始化 ①type name = value; ②type name = { value };
2、先定义变量,再初始化 ①type name; name = value; ②type name; name = { value };
注意:用字符串常量赋值字符指针时,需先满足强类型
①const char* name = "value"; ②const char* name = { "value" };
①const name; name = "value"; ②char name; name = { "value" };
即使用初始化列表初始化变量时,value的类型是什么,变量就需要用什么类型接收。

编辑于 2022-11-25 12:25:15 回复(0)
数组名是一个不可修改的常量。
char s[8]; s={"Beijing"};
char s[8]; s="Beijing";
这两种写法都是错的!因为是先声明了,然后再定义初始化的,这么一来就得修改数组名,而这是不允许的!
但是假如这么写:
char s[8]={"Beijing"};
char s[8]="Beijing";
那就是对的!
编辑于 2021-10-19 09:03:31 回复(1)
为什么在编译器上会报错呢??
发表于 2021-11-15 20:06:44 回复(2)
正确的语句组是选项 B 和 D。

B 选项中的语句 `char *s; s = {"Beijing"};` 定义了一个字符指针 `s`,然后将字符串字面值 `"Beijing"` 赋值给 `s`。这种赋值操作是允许的,可以将字符串字面值直接赋值给字符指针。

D 选项中的语句 `char *s; s = "Beijing";` 同样定义了一个字符指针 `s`,并将字符串字面值 `"Beijing"` 赋值给 `s`。

选项 A 和 C 中的语句是不正确的:

在 A 选项中,尝试将一个字符串字面值数组直接赋值给字符数组 `s` 是不允许的。

在 C 选项中,定义了一个字符数组 `s[8]`,然后尝试将字符串字面值 `"Beijing"` 直接赋值给 `s`,这也是不允许的。应该使用字符串复制函数 `strcpy` 或者使用初始化列表进行初始化。

发表于 2023-11-15 10:01:05 回复(0)
B选项已经不行了,题目过时了。
发表于 2023-04-13 21:19:16 回复(0)

发表于 2023-02-02 11:14:08 回复(0)
AC 数组名相当于const指针 指针指向不能变好AC不对B选项 等号右边为初始化列表不能用于赋值
发表于 2021-03-01 16:26:15 回复(0)
感觉B也是对的
发表于 2019-11-27 10:17:34 回复(1)
数组变量名是一个常量指针(指针的值不能修改,但是指针指向的空间可以修改)
发表于 2023-07-18 23:33:20 回复(0)
B编译不通过,C11不支持这种写法

编辑于 2023-03-01 15:55:46 回复(0)
char*s,不是野指针
发表于 2022-08-24 14:32:10 回复(1)
字符数组初始化与赋值:
1. 可以在定义字符数组时,初始化其字符串的值
char s[] = {'s','t','r','i','n','g'};
2. 可以将字符串在定义时直接赋给字符数组:
char s[] = "string";
3. 字符数组初始化时可以赋值,但不可以直接赋值:
char s[];
s = "string";    //这个赋值方式是错误的,会编译报错
4. 给字符串数组直接赋值,使用strcpy函数:
char s[];
strcpy(s, "string");
字符指针初始化与赋值
char *a;   a = "hello";
char *a;   a ={"hello"};
这个正确,赋值给a的是字符串“hello”,第一个元素的地址。

发表于 2022-08-03 16:44:57 回复(0)
选项已经过时了,全是错的
发表于 2022-05-24 20:54:10 回复(0)
选项B是错误的
发表于 2022-05-20 15:14:32 回复(0)
D
编辑于 2022-03-13 09:26:49 回复(0)