union內嵌struct用法

2022-08-02 08:36:10 字數 1455 閱讀 1431

// union內嵌struct用法// 眾所周知,union為聯合體,struct為結構體。下面根據例項談談用法

#include

#include

void main()

half;

}number;

strcpy(number.i,"abcda");

printf("%c%c\n",number.half.first, number.half.second);

printf("%c%c%d\n",number.half.third, number.half.fourth,number.half.five);

}

// 輸出結果為:

// union中各個變數是共用記憶體空間。上例中,char陣列和結構體共用記憶體空間。正如程式輸出結果

// char陣列賦值,結構體中的變數就會按順序獲得陣列中的值。

main()

half;

}number;

number.i=0x44434241;

printf("%c%c%c%c\n", number.half.first,number.half.second,number.half.third, number.half.fourth);

number.half.first='a';

number.half.second='b';

number.half.third='c';

number.half.fourth='d';

printf("%x\n", number.i);

}

// 輸出結果為:

// 從上例結果可以看出: 當給i賦值後, first,second,third,fourth也就相應被賦值;

// 當給first,second,third,fourth賦字元後, 這四個字元的ascii碼也被賦值給i。

關於Union和Struct對齊

關於union,struct,還有機器數賦值,總是感覺自己認識不是特別深刻,這裡使用小demo程式加以說明,具體的詳細細節描述其它地方已經有說明和記錄,這裡不再說明。include union myun u int k a int main output size is 12 0 5 6 說明 in...

struct和union的大小

結構體預設對齊方式 在預設對齊方式下,結構體成員的記憶體分配滿足下面三個條件 1.第乙個成員的位址和結構體的首位址相同,即偏移量為0。2.結構體每個成員位址相對於結構體首位址的偏移量 offset 是該成員大小的整數倍,如果不是則編譯器會在成員之間新增填充位元組 internal adding 3....

struct與union位元組對齊問題

c 語言的一大優勢就是對記憶體空間的控制,當然,在物件導向語言的壓力下,程式設計師更喜歡輕鬆的語言,不喜歡自己還要顧慮記憶體空間。可是,c 語言仍然有很強的生命力,尤其是在作業系統 嵌入式系統這兩方面,因為要直接操作硬體,c語言就顯現出自己強大的體制 機制 邏輯優勢。c語言對記憶體控制,有乙個始終困...