C C 結構體用法及其對齊原則

2021-09-02 11:36:39 字數 631 閱讀 5135

#include using namespace std;

/* ①結構體變數的首位址(比如結構體陣列就要考慮到結構體本身的位址)能夠被其最寬基本型別成員的大小所整除;

②結構體每個成員相對結構體首位址的偏移量(offset)都是該成員大小的整數倍,如有需要編譯器會在成員之間加上填充位元組;

③結構體的總大小為結構體最寬基本型別成員大小的整數倍,如有需要編譯器會在最末乙個成員之後加上填充位元組。

*/struct a

;int main()

; a a2 = a1;

cout << a2.c1 << "," << a2.s1 << "," << a2.i1 << "," << a2.d1 << endl;

//結構體陣列

a arr[2] = , };

cout << "sizeof(arr)=" << sizeof(arr) << endl;//輸出48

getchar();

return 0;

}

注意,c語言中結構體不能定義函式,而c++可以。c++結構體中的成員預設是public的,而class中的成員的預設是private的,其他struct與class完全一樣。

C C 結構體對齊原則

先介紹四個概念 1 資料型別自身的對齊值 基本資料型別的自身對齊值,等於sizeof 基本資料型別 2 指定對齊值 pragma pack value 時的指定對齊值value。3 結構體或者類的自身對齊值 其成員中自身對齊值最大的那個值。4 資料成員 結構體和類的有效對齊值 自身對齊值和指定對齊值...

c c 結構體 記憶體對齊原則

原則1 資料成員對齊規則 結構的資料成員,第乙個資料成員放在offset為0的地方,以後每個資料成員儲存的起始位置要從該成員大小的倍數開始 比如int在32位機為4位元組,則要從4的整數倍位址開始儲存 原則2 結構體的總大小,也就是sizeof的結果。必須是其內部最大成員的整數倍。不足的要補齊。原則...

《C 》 finddata t結構體用法

struct finddata t是用來儲存檔案各種資訊的結構體,使用這個結構體要引用的標頭檔案為 include 它的結構體定義如下 struct finddata t 改結構體中各成員的變數的含義如下 unsigned atrrib 檔案屬性的儲存位置。它儲存乙個unsigned單元,用於表示檔...