c++面試題

請填寫bool , float, 指針變數 與“零值”比較的 if 語句。

頭檔案中的 ifndef/define/endif 乾什麼用?

#include 和 #include “filename.h” 有什麼區別?

const 有什麼用途?(請至少說明兩種)

在c++ 程式中調用被 c編譯器編譯後的函式,為什麼要加 extern “c”聲明?

const 與 #define有什麼不同

答案: 1. const 常量有數據類型,而宏沒有數據類型。編譯器可以對const 常量進行類型檢查,而對宏只進行字元替換沒有類型檢查。

2. 有些編譯器可以對const常量進行調試,但不能對宏常量進行調試

3. const 可以用來修飾函式參數、函式返回值,c++還可以用來修飾函式,定義內中某個成員函式為常量函式

寫一個“標準”宏min,這個宏輸入兩個參數並返回較小的一個。

預處理器標識#error的目的是什麼?

嵌入式系統中經常要用到無限循環,你怎么樣用c編寫死循環呢?

關鍵字static的作用是什麼?

這個簡單的問題很少有人能回答完全。在c語言中,關鍵字static有三個明顯的作用:

1). 在函式體,一個被聲明為靜態的變數在這一函式被調用過程中維持其值不變。

2). 在模組內(但在函式體外),一個被聲明為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問。它是一個本地的全局變數。

3). 在模組內,一個被聲明為靜態的函式只可被這一模組內的其它函式調用。那就是,這個函式被限制在聲明它的模組的本地範圍內使用。

大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個應試者的嚴重的缺點,因為他顯然不懂得本地化數據和代碼範圍的好處和重要性。

關鍵字volatile有什麼含意 並給出三個不同的例子。

一個定義為volatile的變數是說這變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的值了。精確地說就是,最佳化器在用到這個變數時必須每次都小心地重新讀取這個變數的值,而不是使用保存在暫存器里的備份。下面是volatile變數的幾個例子:

1). 並行設備的硬體暫存器(如:狀態暫存器)

2). 一個中斷服務子程式中會訪問到的非自動變數(non-automatic variables)

3). 多執行緒套用中被幾個任務共享的變數

回答不出這個問題的人是不會被僱傭的。我認為這是區分c程式設計師和嵌入式系統程式設計師的最基本的問題。嵌入式系統程式設計師經常同硬體、中斷、rtos等等打交道,所用這些都要求volatile變數。不懂得volatile內容將會帶來災難。

請問c++的類和c裡面的struct有什麼區別?

請講一講析構函式和虛函式的用法和作用?

全局變數和局部變數有什麼區別?實怎么實現的?作業系統和編譯器是怎么知道的?