u013421512
coco1312
采纳率30.2%
2015-09-18 10:15 阅读 5.8k

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;

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 91program 91program 2015-09-18 10:48

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

    点赞 3 评论 复制链接分享
  • csdnliming147 蚂蚁de臂膀 2015-09-18 15:02

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

    点赞 评论 复制链接分享
  • NoMasp nomasp 2015-09-19 01:35

    C# Java才可以的。。。。

    点赞 评论 复制链接分享
  • lovingning mnlin 2015-09-19 17:37

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

    点赞 评论 复制链接分享

相关推荐