C sizeof各種型別的大小

2021-07-02 16:13:40 字數 1229 閱讀 1241

c++各種型別的sizeof大小,先放測試**和測試結果(vs2013)。

#include 

using

namespace

std;

// 測試基礎型別 //

int getarraysize(char str)

void testsizeofbase()

測試空類

class emptya

;class emptyb : public emptya

;struct emptystruct

;void testsizeofempty()

// 測試記憶體對齊 //

class aligna

;class alignb

;class alignc

;#pragma pack(1)

class alignd

;#pragma pack()

void testsizeofalign()

測試多型

sizeof(getarraysize(arrstr))4,是因為引數傳遞為形參時,把陣列轉為了指標。

sizeof(空類)1,是因為例項化類需要編譯器給它分配記憶體空間,不能分配為size為0的記憶體,所以編譯器預設分配了乙個位元組,以便標記可能初始化的類例項,同時使空類占用的空間也最少(即1位元組)。

記憶體對齊,物件的首位址能夠被其最寬基本型別成員的大小所整除;每個成員相對於結構體首位址的偏移量(offset)都是成員大小的整數倍, 如有需要編譯器會在成員之間加上填充位元組(internal adding);總大小為最寬基本型別成員大小的整數倍。

虛函式,虛函式表指標,大小相當於sizeof(void *)。

各種型別的轉換

int i 100 long l 2001 float f 300.2 double d 12345.119 char username csdn char temp 200 char buf cstring str variant t v1 bstr t v2 一 其它資料型別轉換為字串 二 字串...

各種型別的轉換

1.std string轉換成qstring string std str abc qstring q str qstring fromstdstring std str 2.qstring轉換成std string qstring q str abc string q str.tostdstrin...

各種型別的長度

這個要看字元數是什麼資料型別,可以用sizeof 型別 操作符來測試位元組數。1 英文本母 如果是char 型,那麼是占用1個位元組,8位。如果是string型,應該是兩個位元組,16位,因為末尾還有個 0字元。比如 char c a 它占用乙個字元 char c a 占用兩個。char c abc...