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

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

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

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct test
  4. {
  5. int a;
  6. int b;
  7. char ss[10];
  8. };
  9. int main()
  10. {
  11. struct test t1 = {1, 2, "hello"};
  12. struct test t2;
  13. t2 = t1;
  14. printf("%d, %d, %s\n", t2.a, t2.b, t2.ss);
  15. return 0;
  16. }
#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

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

 

公司简介
 

聚拓互联(http://www.ejutuo.com).Net平台至强虚拟主机供应商,是领先的互联网基础应用服务提供商,主要面向全球客户提供域名注册、国内、香港/美国虚拟主机、企业邮箱、智能建站、虚拟服务器(VPS)、服务器租用、服务器托管等丰富的网络产品服务。

聚拓互联的快速发展与其企业文化密不可分,易网人秉持“团结互助、敬业负责、恪守信誉、积极进取、勇于创新”的企业文化,汇聚了行业内的大量专业人士,拥有多位国内顶尖的linux/freeBSD/unix经验的系统工程师、微软认证工程师和网络安全技术人才。核心团队均为该行业从业多年的专业人士,拥有丰富行业经验和较高威望,并不断改革创新,以满足客户多元化需求为己任,不断进取。 同时,易网坚守 “专业品质、服务为本、诚信经营、恪守信誉”的核心价值观,为客户提供多样、安全、稳定、放心的产品。

posted on 2012-08-23 22:17  天外飞仙2  阅读(783)  评论(0)    收藏  举报

导航