同型別結構體之間賦值不一定有效
今天為這個問題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 ...