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; }
希望對你有所幫助,如有不正確的地方,還請指教。。多謝~~