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