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

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


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

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