zoukankan      html  css  js  c++  java
  • C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

    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
    ", 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
    ",t4.a,t4.b,t4.ss);
    
        return 0;  
    }  

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

     
  • 相关阅读:
    offset家族
    $的符号封装
    操作字符串
    无缝滚动
    根据字符返回位置
    网页编码和解码
    小米手机案例
    字符串对象常用方法
    匀速运动案例
    Render Functions & JSX
  • 原文地址:https://www.cnblogs.com/qingergege/p/6511740.html
Copyright © 2011-2022 走看看