大众信息网

c语言结构体数组赋值

答案:6  mip版
解决时间 2021-01-08 13:36
  • 提问者网友:终究是陌生了
  • 2021-01-08 04:01
我这样做可以吗? stu[1]=stu[2]; 这两个都是结构体数组的元素.
最佳答案
  • 二级知识专家网友:陪我去流浪
  • 2021-01-08 04:58
相同类型的结构体是可以直接赋值的,这是ANSI/ISO C规定的。ANSI/ISO C规定的合法行为,编译器是必须支持的。

但不能进行比较,例如
if (stu[1] == stu[2])是不允许的。

这种问题不能靠试验获得准确的答案,因为你用的编译器支持并不表明其他编译器也支持。
全部回答
  • 1楼网友:敌不过时间逃不过距离
  • 2021-01-08 08:19
如果你写过=的重载函数就可以. 不然就只好一个个成员赋值, 要么用memcpy(stu[1], stu[2], sizeof(stu[1]))也可以
  • 2楼网友:輓揂隨風
  • 2021-01-08 07:02
不用理哪些只知道c++的人的话,不用管c++的什么重载函数, 在标准c语言中,对于大字节类型编译器默认可以直接赋值。 你这样赋值是没有问题的。
  • 3楼网友:白衣衬衫净少年
  • 2021-01-08 06:38
简单的结构体直接赋值是没有问题的 如果有指针成员,赋值的结果可能不是你想要的
  • 4楼网友:百合的盛世恋
  • 2021-01-08 05:43
答案是肯定的,你可以写一个程序验证一下嘛,给你一个 #include struct student { int a; int b; int c; } stu[3]={{1,1,1},{2,2,2},{3,3,3}}; main() { int i; for(i=1;i<3;i++) printf("%5d%5d%5d\n",stu[i].a,stu[i].b,stu[i].c); stu[1]=stu[2]; for(i=1;i<3;i++) printf("%5d%5d%5d\n",stu[i].a,stu[i].b,stu[i].c); }
  • 5楼网友:选择重头再来
  • 2021-01-08 05:14
对于已经定义好了的数组,肯定不能用这样赋值啦,给结构体赋值其实就跟其他的变量赋值一样,难道你可以 int a[3]; a={0,1,2}; 这个给一个int数组赋值吗,不行啊。 正确的做法就是像其他变量一样一个一个赋值,当然也可在结构体初始化时赋值
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯