8月1 結構體內存 自學資料結構入門

2021-08-22 02:19:33 字數 753 閱讀 2520

總之結構體對齊可以總結為三個基本原則:

結構體的總大小(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.線性表是最簡單也是最常用...