關於sizeof的筆試面試題詳解

2021-06-27 01:20:43 字數 1208 閱讀 1466

注意:sizeof是編譯期計算出結果的,這一點對後面的理解很重要

一、關於結構體

先看下**

#include "stdafx.h"

#include using namespace std;

typedef struct

test1;

typedef struct

test2;

typedef struct

test3;

typedef structtest4;

typedef structtest5;

int _tmain(int argc, _tchar* argv)

~emptyclass1(){}

};class emptyclass2

virtual ~emptyclass2(){}

};class hwcbase

virtual ~hwcbase(){}

private:

int base;

};class hwcsubfirst:hwcbase

~hwcsubfirst(){}

private:

int sub;

};class hwcsubsecond:hwcbase

~hwcsubsecond(){}

private:

int sub;

char sub2;

};int _tmain(int argc, _tchar* argv)

{ cout<

執行結果

解釋下:

1、對於乙個空的類,在記憶體中要存在乙個標示來區分,所以即使是空的,也要分配乙個位元組

2、同樣是empty的類,但是有乙個虛的析構函式,所以,儲存了乙個指標(vptr)指向虛表。乙個指標4byte

3、hwcbase類,有乙個int占用4byte,乙個指標(vptr),所以共占用8byte

3、hwcsubfirst,繼承來乙個int,本身有乙個int,加上乙個vptr指標,共12位元組

4、hwcsubsecond,和hwcsubfirst類似,但是多了乙個char,考慮到記憶體對其,12+4 = 16位元組

關於sizeof的筆試面試題具體解釋

注意 sizeof是編譯期計算出結果的,這一點對後面的理解非常重要 一 關於結構體 先看下 include stdafx.h include using namespace std typedef struct test1 typedef struct test2 typedef struct te...

C 面試題之sizeof面試題

sizeof面試題1.cpp what is the output of the following code?美國某著名計算機軟硬體公司面試題 include include include using namespace std structa structb int main 解析 ss1是乙...

sizeof面試題選

sizeof面試題選 linux c程式設計實戰 結構體和共用體的記憶體分配是c語言的乙個難點,也是面試題中的熱點。示例1 union data1 sizeof union data1 的值為16.在編譯器預設設定的情況下,該共用體最大基本型別為double,它佔8位元組,所以此共用體以8來對齊。字...