先放结论
可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量,但是需要满足一个条件。
整体赋值规则
ansi/iso C规定:“相同类型的结构体是可以直接赋值的”;
合法赋值: 如date1和date2都是date结构体类型的变量,可以这样赋值:date1= date2;
非法赋值: 假设申明了两个成员列表完全一样的两个结构体类型(dataA,dateB),即使他们的成员列表是一样的,编译器会当作两个完全不同的类型,令两个结构体类型的变量间赋值,则是非法的。
#include <stdio.h>
typedef struct {
int a;
int b;
} str_t;
int main()
{
str_t str1;
str_t str2;
str1.a = 5;
str1.b = 6;
str2 = str1;
printf("%d\n", str2.a);
printf("%d\n", str2.b);
}
输出结果:
5
6