sizeof計(jì)算結(jié)構(gòu)體大小 結(jié)構(gòu)體、類(lèi)的大小如何計(jì)算?
結(jié)構(gòu)體、類(lèi)的大小如何計(jì)算?計(jì)算方法:運(yùn)算符sizeof可以計(jì)算給定類(lèi)型的大小。對(duì)于32位系統(tǒng),sizeof(char)=1,sizeof(int)=4?;緮?shù)據(jù)類(lèi)型的大小易于計(jì)算。讓我們看看如何計(jì)算構(gòu)
結(jié)構(gòu)體、類(lèi)的大小如何計(jì)算?
計(jì)算方法:運(yùn)算符sizeof可以計(jì)算給定類(lèi)型的大小。對(duì)于32位系統(tǒng),sizeof(char)=1,sizeof(int)=4?;緮?shù)據(jù)類(lèi)型的大小易于計(jì)算。讓我們看看如何計(jì)算構(gòu)造數(shù)據(jù)類(lèi)型的大小。C語(yǔ)言中的結(jié)構(gòu)數(shù)據(jù)有三種類(lèi)型:數(shù)組、結(jié)構(gòu)體和公共體。數(shù)組是相同類(lèi)型元素的集合。只要計(jì)算單個(gè)元素的大小,整個(gè)數(shù)組所占用的空間就等于基元素的大小乘以元素?cái)?shù)。結(jié)構(gòu)中的成員可以是不同的數(shù)據(jù)類(lèi)型,它們按照定義的順序存儲(chǔ)在連續(xù)的內(nèi)存空間中。與數(shù)組不同,結(jié)構(gòu)的大小不是所有成員的簡(jiǎn)單和,因此在存儲(chǔ)結(jié)構(gòu)變量時(shí)需要考慮地址對(duì)齊問(wèn)題??纯聪旅娴慕Y(jié)構(gòu):struct stu1{int i char c int j};
如何計(jì)算結(jié)構(gòu)體大???
這是一個(gè)結(jié)構(gòu),不是一個(gè)公共體。您可以直接添加int-4 bytes float-4 bytes char-1 byte char[20]-20 bytes 20 44=28 bytes,因此sutdent結(jié)構(gòu)是28 bytes
結(jié)構(gòu)的字節(jié)長(zhǎng)度是結(jié)構(gòu)中最長(zhǎng)變量長(zhǎng)度的整數(shù)倍。例如,上述示例中的內(nèi)部變量的實(shí)際長(zhǎng)度為4144=13字節(jié),但是sizeof(student)=16,16是內(nèi)部最長(zhǎng)變量int type 4字節(jié)的整數(shù)倍。如果結(jié)構(gòu)中的內(nèi)部得分變量是雙變量,則每個(gè)變量類(lèi)型的實(shí)際長(zhǎng)度為41448=17。為了使整個(gè)結(jié)構(gòu)的大小為雙(8字節(jié))的整數(shù)倍,編譯器使sizeof(student)=24,