C语言中结构体的直接赋值

时间:2021-12-07 01:00:55


这篇文章当时写的比较随意,考虑到看到这篇文章的人比较多,我重新写了一篇比较完整的发布在我的新博客中,大家可以参考:

Code问答 :C语言中结构体的直接赋值?









一直记得C语言中,结构体是不可以直接赋值的。我问了三个同学,都说在C++中可以,在C语言中不可以,需要逐一成员赋值或者用memcpy函数。

我测试了一下如下的程序:

#include <stdio.h>
#include <stdlib.h>

struct test
{
int a;
int b;
char ss[10];
};

int main()
{
struct test t1 = {1, 2, "hello"}; // 初始化

struct test t2;
t2 = t1; // 赋值运算符
printf("%d, %d, %s\n", t2.a, t2.b, t2.ss);
return 0;
}


答案是可以直接赋值的。

参考

http://*.com/questions/1575181/why-operator-works-on-structs-without-having-been-defined