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\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;  
}  

 

希望對你有所幫助,如有不正確的地方,還請指教。。多謝~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM