總之結構體對齊可以總結為三個基本原則:
結構體的總大小(sizeof): 為該結構體內部最大基本型別的整數倍,不足的要補齊,而不是簡單的所有成員的大小總和。
struct str2
;
str2這個結構體占用的記憶體空間是24!
分析如下:
首先double型別的a占用記憶體位址為0~7
int型別的b起始位址為8,符合規則一,占用位址為8~11
char型別的c佔乙個位元組,位址為12
那麼double型別的d,起始位址為13嗎?顯然不是,滿足規則一的位址是16,所以d起始位址為16,占用16到23。
結構體總共24個位元組,滿足規則二。
但是如果這個結構體最後再加乙個成員變數 char e,那這個結構體占用的記憶體是多少?
分析:char型別的e起始位址為24,占用位址為24,但是結構體一共有25個位元組,就不滿足規則二了,怎麼辦呢?
為了滿足規則二,我們將25~31進行填充,因此整個結構體占用32個位元組。
演算法特性
輸入、輸出
有窮性 在執行有限步驟之後,自動結束而不會出現無限迴圈,並且每乙個步驟可在可接受的時間內完成
確定性 演算法的每一步驟都具有確定的含義,不會出現二義性
可行性 演算法的每一步都必須是可行的
演算法設計要求
正確性可讀性
健壯性 當輸入資料不合法是,演算法也能做出相關處理,而不是產生 異常或莫名奇妙的結果
時間效率高和儲存量低
C學習筆記8 結構體內存分配
結構體的記憶體分配,就是找到能被成員變數型別長度n整出的位址值來儲存,下乙個成員變數也這樣,中間的空位補0.最後整個結構體的長度 也是最大n的整數倍 後面多的也補零 struct a sizeof a struct b sizeof b struct c sizeof c sizeof a 8 i存...
自學考試 資料結構
1.帶頭結點的單迴圈鍊錶的頭指標為head,則判斷該鍊錶是否為空的條件是head next head 2.不需要判斷棧是否為空的是 進棧 3.對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0 n2 1 4.m個葉結點的哈夫曼樹中,其結點總數為2m 1 5.用n表示圖中頂點...
資料結構1 線性結構
資料結構是指資料元素的結合及元素間的相互關係和構造方法。元素之間的相互關係是資料的邏輯結構,元素關係的儲存形式成為儲存結構。資料結構按照邏輯關係的不同分為線性結構和非線性結構兩大類。其中線性結構是最基本的結構,元素順序排列,常見的有線性表 棧 佇列 陣列 串。一 線性表 1.線性表是最簡單也是最常用...