同型別結構體之間賦值不一定有效

2021-09-06 18:46:37 字數 1270 閱讀 2273

同型別結構體之間賦值不一定有效

今天為這個問題debug好久...

之前看到乙個關於結構體使用的技巧, 這個技巧可以避免記憶體零碎. 保證結構體所屬記憶體盡量不要零散化.

struct struct_name

關於該使用方法的介紹.

對於普通的結構體,

struct num

;

這樣的型別的結構體就能夠通過賦值operator =賦值

可是!

上面介紹的那種特殊使用方法不行.

#include #include int main()

; struct num

; struct num m = ;

struct num n = ;

/*** attention! m = n;

*/ m = n;

printf("m.x:%d m.y:%d n.x:%d n.y:%d\n",m.x,m.y,n.x,n.y);

struct node* p_string_1 = (struct node*)malloc(sizeof(100)+sizeof(int));

struct node* p_string_2 = (struct node*)malloc(sizeof(100)+sizeof(int));

char hello = ;

char panic = ;

int tmp = 0;

for(tmp = 0;tmp < sizeof(hello)/sizeof(hello[0]); tmp++)

for(tmp = 0;tmp < sizeof(panic)/sizeof(panic[0]); tmp++)

printf("1:%s2:%s\n",p_string_1->string,p_string_2->string);

/* ** attention! here is an eveil!

*/ *p_string_1 = *p_string_2;

printf("1:%s2:%s\n",p_string_1->string,p_string_2->string);

free(p_string_1);

free(p_string_2);

return 0;

}

猜猜看,列印的結果是什麼?

C語言中不同型別資料之間的賦值

整數與整數之間 一 長度相等 在記憶體中儲存的位數相等 的兩個不同的型別的資料之間的賦值 在計算機中的儲存內容不變,只是資料按照不同的編碼格式來解析。二 長賦值給短 短 長 擷取低位,然後按照短整數的資料型別解析。三 短賦值給長 長 短 其中,短轉長又分為三種情況 1.兩個資料都是無符號的資料,短整...

C 含陣列成員的結構體變數之間的賦值

含有陣列成員的結構體的變數之間可以進行賦值,示例如下 include define n 20 typedef struct hcode intmain void hc arr 0 hc printf s n d n hc arr 0 cd,hc arr 0 start return0 以上 在iso...

C語言結構體前後命名不一致問題

首先,c語言定義結構體的格式為 typedef struct 本名別名 區別在於,使用本名定義結構體例項時,必須加上struct 而使用別名的時候不需要,這就簡化了程式。譬如typedef struct studentstudent struct student stu1 student stu2 ...