最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言詳解熱門考點(diǎn)結(jié)構(gòu)體內(nèi)存對(duì)齊

 更新時(shí)間:2022年04月12日 08:06:25   作者:scut-ALong  
C?數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是?C?編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng),本篇讓我們來(lái)了解C?的結(jié)構(gòu)體內(nèi)存對(duì)齊

一、為什么存在內(nèi)存對(duì)齊

        大部分的參考資料都是如是說(shuō)的:

        1.平臺(tái)原因(移植原因):不是所有的硬件平臺(tái)都能訪問任意地址上的任意數(shù)據(jù)的;某些硬件平臺(tái)只能再某些地址處取某些特定類型的數(shù)據(jù),否則拋出硬件異常。

        2.性能原因:數(shù)據(jù)結(jié)構(gòu)(尤其是棧)應(yīng)該盡可能地再自然邊界上對(duì)齊。原因在于,為了訪問未對(duì)其的內(nèi)存,處理器需要作兩次內(nèi)存訪問;而對(duì)齊的內(nèi)存訪問僅需要一次訪問。

        總體來(lái)說(shuō):結(jié)構(gòu)體的內(nèi)存對(duì)齊是拿空間來(lái)?yè)Q取時(shí)間的做法

二、如何計(jì)算?(考點(diǎn))

        首先得掌握結(jié)構(gòu)體得對(duì)齊規(guī)則:

1.第一個(gè)成員再與結(jié)構(gòu)體變量偏移量為0得地址處。

2.其他成員變量要對(duì)齊到自身對(duì)齊數(shù)得整數(shù)倍得地址處。

  • 對(duì)齊數(shù) = 編譯器默認(rèn)得一個(gè)對(duì)齊數(shù) 與 該成員大小的較小值 (VS中默認(rèn)的值為8)

3.結(jié)構(gòu)體總大小為最大對(duì)齊數(shù)(每個(gè)成員變量都有一個(gè)對(duì)齊數(shù))的整數(shù)倍。

4.如果嵌套了結(jié)構(gòu)體的情況,嵌套的結(jié)構(gòu)體對(duì)齊到自己的最大對(duì)齊數(shù)的整數(shù)倍處,結(jié)構(gòu)體的整體大小就是所有最大對(duì)齊數(shù)(含嵌套結(jié)構(gòu)體的對(duì)齊數(shù))的整數(shù)倍。

三、手撕代碼

        上面的干貨太干了是不是,小伙伴們可以多讀幾遍,結(jié)合下面練習(xí)把這塊知識(shí)點(diǎn)拿下。

練習(xí)1:

struct s1
{
	char c1;
	int i;
	char c2;
};
printf("%d\n", sizeof(struct s1)); //12

 練習(xí)2:

struct s2
{
	char c1;
	char c2;
	int i;
};
printf("%d\n", sizeof(struct s2)); //8

 練習(xí)3:

struct s3
{
	double d;
	char c;
	int i;
};
printf("%d\n", sizeof(struct s3)); //16

 練習(xí)4:

struct s4
{
	char c1; //0   
	struct s3 s; //8-23
	double d; //24-31
	
	int i;
};
printf("%d\n", sizeof(struct s4));//32

         這是嵌套結(jié)構(gòu)體的情況,在內(nèi)存中所占的每一位已標(biāo)出(要32位,太多了就沒畫圖哈哈)。謝謝大家耐心讀到這里,如果這篇文章對(duì)你有所幫助,還請(qǐng)三連支持!

到此這篇關(guān)于C語(yǔ)言詳解熱門考點(diǎn)結(jié)構(gòu)體內(nèi)存對(duì)齊的文章就介紹到這了,更多相關(guān)C語(yǔ)言 內(nèi)存對(duì)齊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

平舆县| 吐鲁番市| 乐昌市| 大邑县| 拉孜县| 沅陵县| 武乡县| 广汉市| 漠河县| 自治县| 石台县| 广元市| 呼和浩特市| 石棉县| 香港 | 荥经县| 兴安盟| 兴国县| 淳化县| 崇文区| 嘉兴市| 阜宁县| 松溪县| 霞浦县| 仙居县| 临沂市| 贵溪市| 驻马店市| 南漳县| 遂平县| 清流县| 宁波市| 抚松县| 手机| 都兰县| 达日县| 阆中市| 孝昌县| 徐汇区| 泸定县| 石台县|