C 常見面試基礎

2021-07-23 08:53:24 字數 483 閱讀 7619

定義乙個空的型別,裡面沒有任何成員變數和成員函式。對該型別求sizeof,得到的結果是多少?

答:答案是1。因為空型別的例項中不包含任何資訊,本來求sizeof應該是0,但是當我們宣告該型別的例項的時候,它必須在記憶體中占有一定的空間,否則無法使用這些例項,至於占用多少記憶體,有編譯器決定,vs中每個空型別的例項占用1位元組的空間。

如果在該型別中新增乙個建構函式和析構函式,再對該型別求sizeof,得到的結果又是多少?

答:還是1.呼叫建構函式和析構函式只需要知道函式的位址即可,而這些函式的位址只與型別相關,而與型別的例項無關,編譯器也不會因為這兩個函式而在例項內新增額外的資訊。

那如果把析構函式標記為虛函式呢?

答:c++的編譯器一旦發現乙個型別中有虛函式,就會為該型別生成虛函式表,並在該型別的每乙個例項中新增乙個指向虛函式表的指標。在32位的機器上,乙個指標佔4位元組的空間,因此sizeof為4,;如果是64位的機器,乙個指標佔8位元組的空間,那麼sizeof為8。

常見面試題(總結) C 基礎

include include includevoid getmemory char p,int num int main 記憶體對齊規則是按照結構體成員的宣告順序,依次安排記憶體,主要遵循以下兩個原則 為什麼要記憶體對齊?如0x1234567的大端位元組序和小端位元組序的寫法如下 既然這些它都能實...

C 常見面試題

1.c中static有什麼作用 1 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,故使用static在不同的檔案中定義同名函式和同名變數,而不必擔心命名衝突。2 static的第二個作用是保持變數內容的持久。儲存在靜態資料區的變數會在程式剛開始執行時就...

C常見面試題

1.bool型別,值為true或flase 正確答案 bool flag if flag if flag 以下均為不良風格 if flag true if flag 1 if flag false if flag 0 2.char 3.int int x if x 0 if x 0 4.float ...