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