C語言 結構體設定位元組對齊方式

2021-07-06 05:37:05 字數 703 閱讀 3159

結構體是c語言中一種類似於類的變數;

關鍵字為struct;

定義方式:

struct student

char  name[10];

int     age;

bool  gender;

設定位元組對齊,使用#pragma pack()

#pragma pack(1) // 讓編譯器做1位元組對齊

struct student

char  name[10];

int     age;

bool  gender;

#pragma pack() // 取消1位元組對齊,恢復為預設對齊

這裡是標頭檔案結構的定義:

乙個非位元組對齊結構體_tagtest2

乙個位元組對齊_tagtest3

(使用#pragma pack(push,1)來使位元組以1個來對齊 , 使用#pragma pack(pop)來還原預設)

#pragma once

struct _tagtest1

;//非位元組對齊的結果

struct _tagtest2

;#pragma pack(push,1)

//_tagtest3和2是一樣的結構,位元組對齊後的結果

struct _tagtest3

;#pragma pack(pop)

C語言結構體 位元組對齊

目的 犧牲一點空間,換時間的效率 cpu執行效率 最終結構體大小一定是4的倍數 32bit系統 結構體裡成員變數順序不一致,也會影響結構體的大小 資料型別 32位機大小 位元組 64位機大小 位元組 char11 short22 int4 4long48 指標型別48 double88 float4...

C語言結構體的位元組對齊

在c語言中,結構是一種復合資料型別,其構成元素既可以是基本資料型別 如int long float等 的變數,也可以是一些復合資料型別 如陣列 結構 聯合等 的資料單元。在結構中,編譯器為結構的每個成員按其自然對界 alignment 條件分配空間。各個成員按照它們被宣告的順序在記憶體中順序儲存,第...

C語言結構體的位元組對齊

下面直接來看例子吧 測試環境為32位的系統 以下結構體分別佔多少位元組 struct a sizeof a 3 因為a b c按照1個位元組進行對齊 struct b sizeof b 8 按照4個位元組對齊 a佔4位元組 b佔乙個位元組 c佔2個位元組 有1個位元組剩餘 struct c size...