首页 > 试题广场 >

不能把字符串"HELLO!"赋给数组b的语句是()

[单选题]
不能把字符串"HELLO!"赋给数组b的语句是()
  • char b[10] = {'H','E','L','L','O','!','\0'};
  • char b[10];b = "HELLO!";
  • char b[10];strcpy(b,"HELLO!");
  • char b[10] = "HELLO!";
XD头像 XD
B
数组名 :是一个常量指针 无法进行赋值操作
发表于 2015-08-17 20:49:26 回复(0)
更多回答
B 选项是错误的,连编译都不会通过,因为数组名属于常性指针,现在要改变这个常性指针的指向,这是不会编译通过的,再说B 选项的本意是将Hello 拷贝到b指向的空间中,但实际却是将b指向了在常量区的Hellow 字符串(虽然编译不会通过)。
发表于 2015-08-13 20:43:39 回复(4)
B
b是表示数组的首地址,不能赋值

发表于 2015-08-14 20:26:15 回复(1)
要将字符串赋值给数组,需要在初始化的时候定义,要不然,两个常量,怎么赋值。。哈哈哈
发表于 2015-08-18 14:28:31 回复(0)
将字符串赋值给字符数组: ********************************************** 1.定义时直接用字符串赋值。 char a[10]="hello";但是不能先定义再赋值,即以下非法:char a[10];a[10]="hello"; ********************************************** 2.利用strcpy。 char a[10]; strcpy(a,"hello"); ********************************************** 3.利用指针。 char *p; p="hello";这里字符串返回首字母地址赋值给指针p。另外以下非法:char a[10]; a="hello"; a已经指向在堆栈中分配的10个字符空间,不能再指向数据区中的"hello"常量。可以理解为a是一个地址常量,不可变,p是一个地址变量。 ********************************************** 4.数组中的字符逐个赋值。
发表于 2022-07-17 21:53:12 回复(0)

B选项定义一个存储在栈中的10字节的字符型数组,没有赋值,但是数组名一定是一个指向这个栈数组首元素的常指针,p也因此只能是右值!!!!所以b=.....;就是不对的,你可以更改*b,但是不能更改b的指向。

其次,“HELLO!”是常量字符串,它永远都只能存储在内存的常量区,所以b= dddd ;是让b改变指向;

当char b[]= “HELLO!”;这种初始化;其实是两步;“HELLO!”当然还是存储在常量区,所以

编译器先拷贝一份到栈中,然后执行strcpy(b,“HELLO!”);

发表于 2016-08-25 10:30:47 回复(0)
B 应该改为 char* b = "HELLO!", 此时b为指向常量字符串的指针
发表于 2015-08-15 23:13:15 回复(0)
数组名是常量指针,不能赋值
发表于 2017-09-20 17:52:11 回复(0)
选B。
A和D都是常见的字符数组赋初值的方法。
C是通过strcpy函数将字符串“ HELLO! ”复制到b中,也没问题。

发表于 2015-08-13 11:02:58 回复(0)
选择B 数组名b是一个指针常量,指针常量是一个常量它的指向不能改变,而常量指针是一个指针, 它指向的是一个常量,所以指向的值是不能改变的
发表于 2023-01-30 20:58:28 回复(0)
聚合方式赋值只能在数组声明的时候使用,且字符数组不能给字符数组赋值
发表于 2022-07-13 12:28:17 回复(0)
字符串是一个地址,b也是一个地址,不能直接将地址赋给地址
发表于 2022-05-05 20:06:29 回复(0)
数组名为字符常亮,不能被赋值。
发表于 2022-04-07 09:37:06 回复(0)
赞同,楼上,b是数组首地址,不能赋值
发表于 2022-01-03 12:44:03 回复(0)
b是表示数组的首地址,不能赋值
发表于 2021-12-04 05:05:19 回复(0)
常量区不能改变吧。
发表于 2020-12-25 19:52:49 回复(0)
数组名是一个常性指针,不可以更改其中的地址
发表于 2020-05-08 11:35:21 回复(0)
b为数组名,它是地址,是一个常量,不能被赋值
发表于 2019-09-10 10:14:42 回复(0)
我认为char只有一个字节,所以就觉得D是错误的,可是后来想想一个字节也有8位。
发表于 2019-08-28 22:53:35 回复(0)
这道题明显是选择B啊。b是一个不可修改的左值,它怎么能够被赋值?
发表于 2017-12-20 17:27:00 回复(0)