问题描述
- 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;
?====如题参考答案说为结构体中的数组,不能直接赋值,为什么呢?那应该怎么赋值呢?求大侠指教
解决方案
解决方案二:
一般的数组,也不能直接用等号赋值啊
因为数组名是常指针,不能试图去修改常量指针的数值
解决方案三:
t2.mark=t1.mark;这个语句展开相当于数组初始化的语句
因为在结构体初始化的时候结构体成员也已经进行了初始化,数组就不能再次进行初始化了,只能进行赋值操作。
如果赋值的话就需要利用下标进行逐个赋值。
应该是这么回事。
解决方案四:
C# Java才可以的。。。。
解决方案五:
91说的是对的,一般的数组也是不能直接赋值的,数组名在内存中是一个类似于常量的存在,可以理解为const,在编译的时候就已经给分配的储存位置,在需要使用到数组名时,直接获取的就是一个地址值,因此是不能改变的。
时间: 2024-08-22 14:29:20