c语言结构体数组赋值


我这样做可以吗? stu[1]=stu[2]; 这两个都是结构体数组的元素.
相同类型的结构体是可以直接赋银和值的,这是ANSI/ISO C规定的。ANSI/ISO C规定的合法行为,编译器是必须支持的。

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

这种问题不能靠试验获得准确的答案,因为你用的编译器支持并不表明其他编译带唯器也支持。
答案是肯定的,你可以写一拿世李个程序验证一下嘛,给你一消迟个
#include<stdio.h>
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);
}
如果你写过=的祥兆重载函数就可以.
不慎物然就只好一个个成员赋值谨孝租, 要么用memcpy(stu[1], stu[2], sizeof(stu[1]))也可以
不用理哪些只知道消困c++的人的话,不用管c++的什么重载函数,
在标准c语言中,对于大字节类型编译器默拿野念认可以直接赋值。
你这样赋值是没有问脊型题的。
简单的结构体直接赋值是没有问题的

如果有指针成员,赋值的结果可能不是你想要的