码迷,mamicode.com
首页 > 编程语言 > 详细

C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

时间:2017-03-06 20:50:24      阅读:1120      评论:0      收藏:0      [点我收藏+]

标签:style   code   ext   color   blog   printf   内存分布   log   main   

C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
所以,在C语言中两个相同类型的结构体变量之间是可以相互赋值的。但是要注意指针的浅层复制问题

下面是一个简单的验证代码:
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h> 
#include <stdlib.h>
struct test  
{  
    int a;  
    int b;  
    char ss[10];  
};  
  
struct test2
{
    int a;
    int b;
    char * ss;
};

int main()  
{  
    struct test t1 = {1, 2, "hello"};           
    struct test t2;  
    t2 = t1;  
    strcpy(t1.ss,"张汉青");
    printf("%d, %d, %s\n", t2.a, t2.b, t2.ss); 

    struct test2 t3;
    t3.ss = (char *)malloc(10);
    t3.a=1;
    t3.b=2;
    strcpy(t3.ss,"hello");
    struct test2 t4;
    t4=t3;
    strcpy(t3.ss,"张汉青");
    printf("%d,%d, %s\n",t4.a,t4.b,t4.ss);

    return 0;  
}  

 

希望对你有所帮助,如有不正确的地方,还请指教。。多谢~~

 

C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

标签:style   code   ext   color   blog   printf   内存分布   log   main   

原文地址:http://www.cnblogs.com/qingergege/p/6511740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!