C语言中结构体中的数组,不能直接赋值吗

设有定义:struct{char mark[12];intnum1;double num2;}t1,t2;若变量均已正确赋初值,则以下语句中错误的是(C)

(A) t1=t2;

(B) t2.num1=t1.num1;

(C) t2.mark=t1.mark;//mark为结构体中的数组,不能直接赋值??

(D) t2.num2=t1.num2;

​====如题参考答案说为结构体中的数组,不能直接赋值,为什么呢?那应该怎么赋值呢?求大侠指教

一般的数组,也不能直接用等号赋值啊
因为数组名是常指针,不能试图去修改常量指针的数值

91说的是对的,一般的数组也是不能直接赋值的,数组名在内存中是一个类似于常量的存在,可以理解为const,在编译的时候就已经给分配的储存位置,在需要使用到数组名时,直接获取的就是一个地址值,因此是不能改变的。

t2.mark=t1.mark;这个语句展开相当于数组初始化的语句
因为在结构体初始化的时候结构体成员也已经进行了初始化,数组就不能再次进行初始化了,只能进行赋值操作。
如果赋值的话就需要利用下标进行逐个赋值。
应该是这么回事。

C# Java才可以的。。。。