描述結構體對齊規(guī)則
1. 數組成員對齊規(guī)則。第一個數組成員應該放在offset為0的地方,以后每個數組成員應該放在offset為min(當前成員的大小,#pargama pack(n))整數倍的地方開始(比如int在32位機器為4字節(jié),#pargama pack(2),那么從2的倍數地方開始存儲)。
2. 結構體總的大小,也就是sizeof的結果,必須是min(結構體內部最大成員,#pargama pack(n))的整數倍,不足要補齊。
3. 結構體做為成員的對齊規(guī)則。如果一個結構體B里嵌套另一個結構體A,還是以最大成員類型的大小對齊,但是結構體A的起點為A內部最大成員的整數倍的地方。(struct B里存有struct A,A里有char,int,double等成員,那A應該從8的整數倍開始存儲。),結構體A中的成員的對齊規(guī)則仍滿足原則1、原則2。
如何理解結構體的淺拷貝與深拷貝
當結構體中有指針成員的時候容易出現(xiàn)淺拷貝與深拷貝的問題。
淺拷貝就是,兩個結構體變量的指針成員指向同一塊堆區(qū)空間,在各個結構體變量釋放的時候會出現(xiàn)多次釋放同一段堆區(qū)空間
深拷貝就是,讓兩個結構體變量的指針成員分別指向不同的堆區(qū)空間,只是空間內容拷貝一份,這樣在各個結構體變量釋放的時候就不會出現(xiàn)多次釋放同一段堆區(qū)空間的問題
描述枚舉
關鍵字enum,將枚舉變量將要賦值的值 一一用符號常量(枚舉值)列舉出來。枚舉變量盡量賦值為給定的符號常量(枚舉值)
描述共有體
以關鍵字union修飾,共有體又叫聯(lián)合體,共有體中的成員共享同一塊內存空間。
內存空間總大小由共用體中最大的成員類型決定,每個成員能夠操作的空間大小是由成員自身類型大小決定
描述結構體
以關鍵字struct修飾,結構體中的成員擁有各自獨立的空間,按照(結構體對齊規(guī)則)存儲在內存中
結構體中的成員類型可以不同
結構體與共用體的區(qū)別
結構體中的成員擁有獨立的空間,共用體的成員共享同一塊空間,但是每個共用體成員能訪問共用區(qū)的空間大小是由成員自身的類型決定
結構體變量初始化時需要注意啥
結構體變量的初始化 必須遵循結構體成員的順序以及成員的自身類型
談談你對結構體數組的理解
結構體數組:本質是數組,數組的每個元素為結構體變量。
談談你對結構體位域的理解
在結構體中,以位為單位的成員,咱們稱之為位段(位域)
不能對位域取地址
對位域賦值 不要超過 位域本身位的寬度
談談你對鏈表的理解
鏈表是由一個個節(jié)點組成,節(jié)點沒有名字,每個節(jié)點從堆區(qū)動態(tài)申請,節(jié)點間物理上是非連續(xù)的,但是每個節(jié)點通過指針域 保存下一個節(jié)點的位置 達到邏輯上連續(xù)
談談數組和鏈表的不同點
數組通過下標能夠快速遍歷數組的每個元素(訪問效率高),但是當數組插入或刪除數據時需要移動大量的數據(插入刪除效率低)
鏈表通過指針域逐個節(jié)點的訪問數據(訪問效率低),但是當鏈表插入或刪除節(jié)點不需要移動節(jié)點(插入刪除效率高)
更多關于物聯(lián)網培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養(yǎng)模式,擁有國內一體化教學管理及學員服務,助力更多學員實現(xiàn)高薪夢想。