c語言中結構體儲存空間確定

2021-07-23 04:01:54 字數 770 閱讀 8709

1.使用sizeof函式可以檢視變數型別或者對應的變數所佔的空間。

在vc++6.0下實驗的結果程式及結果如下

2.結構型別的占用空間要符合對齊原則和節邊界值原則。

比如:

#includestruct x1;

struct x2;

struct x3;

int main()

結果為

對齊原則:結構中變數的儲存以該變數所佔空間的倍數的空間開始,比如char任意位置,short為偶數,int是以4為倍數的位址等等。

節邊界值原則:結構的總空間大小必須是結構中最大變數型別的倍數,否則在尾部填充。

struct x1之所以是12,是因為c佔1個位元組,而int需要從4開始,所以c後面需要填充3個位元組空間。int型別佔4個位元組,char型的c佔乙個位元組,加起來是1+3+4+1=9個位元組,不是sizeof(int)的整數倍,所以在後面填充3個位元組,一共就是12個位元組。

struct x2和struct x3的分析同理。由struct x1和struct x2的對比可以得到,合理安排結構中變數的順序可以節省一定的空間(一般來說,都是把大的變數排在前面)。

C語言 結構體儲存空間分配

這兩天在看結構體,一直在琢磨結構體的儲存空間分配的問題,琢磨了半天總算明白了。和大家分享一下,希望能有所幫助。相信大家都知道結構體裡元素儲存要對齊吧,話雖是沒錯,只是這個 對齊 裡面包含了很多微妙的東西。首先詳細的給出結構體內存儲存空間分配的原則吧 編譯器按照成員列表順序乙個接乙個地給每個成員分配記...

C語言中結構體

struct oursvoid main struct ours o2 01 結構體整體直接賦值的時候,即使字串也可以直接賦值 o1.str o2.str 錯誤,字串不能直接賦值 字串拷貝的方式 sprintf o1.str,02.str strcpy o1.str,o2.str 3.1 第一種情況...

C語言中的結構體

在 c語言中,結構體 struct 指的是一種資料結構,是c語言中聚合資料型別 aggregate data type 的一類。結構體可以被宣告為 變數 指標或 陣列等,用以實現較複雜的 資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員 member 且這些成員可以為不同的型別,成員...