在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。如题,请为我解释一下D答案即可!

下列描述中不正确的是( )。D
 A、字符型数组中可能存放字符串
 B、可以对字符型数组进行整体输入、输出
 C、可以对整型数组进行整体输入、输出
 D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
也许这个题不是这个意思,请注意赋值表达式的一般形式为:
变量 赋值运算符 表达式; (见《C语言程序 第三版 谭浩强》第63页)
而一楼的 char a[] = "abc"虽然合法,但却不能算是赋值表达式,而是字符数组的初始化。 而 a[] = "abc"却是不合法的赋值表达式,那是不是可以说“不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值”是对的呢?如果要咬文嚼字的话,我到觉得像一楼说的那样,那个“整体赋值”有问题!关键是问题在哪儿呢?

D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
题目注意题目是下列描述中"不正确"的是
那也就是
按楼上的说法,char a[] = "abc"在C/C++中是合法的,那么应该是
可以在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
显然D的"不能"是错误的.
如果给最佳,给楼上吧.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-06
D是对的

c和指针(《pointers on c》) 8.1.11

一个字符串,如"hello",一般为字符串常量,可以用它对字符指针赋值,或初始化,相当于把这个字符串常量的首地址赋给这个指针,如:

char *p = "hello";

或者

char *p;

p="hello";

但是,当用"hello"给字符数组作初始化时,"hello",并非一个字符串常量,而是相当于一个初始化列表{'h','e','l','l','o','\0'},在其他任何时候,它都表示一个字符串常量。而数组名也是一个指针常量,不能对常量赋值。所以

char a[] = "hello"; //正确,hello",并非一个字符串常量,而是相当于一个初始化列表



char a[6];

a = "hello"; //错误,a为指针常量,不能修改,当然也不能赋值
第2个回答  2011-10-13
在C/C++中 char a[] = "abc" 是合法的,不知道这道题的D选项是什么意思。
但是,如果使用char a[] = "abc"语句的话,a[]数组一共有4个元素,分别是'a','b','c','\0'。
所以,此题是不是这个意思:不同通过“=”运算符,整体的赋值“abc”,只能整体的赋值'a','b','c','\0'。
第3个回答  2011-10-13
同学你是审题不清楚啊,D项说是不能,而事实是能的,所以D错了,题目要我们选出的是不正确的项,所以选D。
第4个回答  2016-01-13
C 规定不可以将整形数组一次性输出 而D项正确
相似回答