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

  [我个人的广告: 欢迎观临我的个人网站 http://tuesland.com 图是蓝的,我的连载中短篇小说已经在 http://tuesland.com/liter 欢迎阅读]

一直记得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://topic.csdn.net/u/20070627/15/a6b39dfa-2ab9-473e-96c3-4054800cb4c1.html

不过里面要是有指针成员,进行了动态分配,指向了某一块内存,那么赋值的时候要注意,不能简单的直接赋值了。


你可能感兴趣的:(c,struct,测试,语言)