c++面試題
請填寫(xiě)BOOL , float, 指針變量 與“零值”比較的 if 語(yǔ)句。
頭文件中的 ifndef/define/endif 干什么用?
#include 和 #include “filename.h” 有什么區別?
const 有什么用途?(請至少說(shuō)明兩種)
在C++ 程序中調用被 C編譯器編譯后的函數,為什么要加 extern “C”聲明?
const 與 #define有什么不同
答案: 1. const 常量有數據類(lèi)型,而宏沒(méi)有數據類(lèi)型。編譯器可以對const 常量進(jìn)行類(lèi)型檢查,而對宏只進(jìn)行字符替換沒(méi)有類(lèi)型檢查。
2. 有些編譯器可以對const常量進(jìn)行調試,但不能對宏常量進(jìn)行調試
3. const 可以用來(lái)修飾函數參數、函數返回值,C++還可以用來(lái)修飾函數,定義內中某個(gè)成員函數為常量函數
寫(xiě)一個(gè)“標準”宏MIN,這個(gè)宏輸入兩個(gè)參數并返回較小的一個(gè)。
預處理器標識#error的目的是什么?
嵌入式系統中經(jīng)常要用到無(wú)限循環(huán),你怎么樣用C編寫(xiě)死循環(huán)呢?
關(guān)鍵字static的作用是什么?
這個(gè)簡(jiǎn)單的問(wèn)題很少有人能回答完全。在C語(yǔ)言中,關(guān)鍵字static有三個(gè)明顯的作用:
1). 在函數體,一個(gè)被聲明為靜態(tài)的變量在這一函數被調用過(guò)程中維持其值不變。
2). 在模塊內(但在函數體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內所用函數訪(fǎng)問(wèn),但不能被模塊外其它函數訪(fǎng)問(wèn)。它是一個(gè)本地的全局變量。
3). 在模塊內,一個(gè)被聲明為靜態(tài)的函數只可被這一模塊內的其它函數調用。那就是,這個(gè)函數被限制在聲明它的模塊的本地范圍內使用。
大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個(gè)應試者的嚴重的缺點(diǎn),因為他顯然不懂得本地化數據和代碼范圍的好處和重要性。
關(guān)鍵字volatile有什么含意 并給出三個(gè)不同的例子。
一個(gè)定義為volatile的變量是說(shuō)這變量可能會(huì )被意想不到地改變,這樣,編譯器就不會(huì )去假設這個(gè)變量的值了。精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的'幾個(gè)例子:
1). 并行設備的硬件寄存器(如:狀態(tài)寄存器)
2). 一個(gè)中斷服務(wù)子程序中會(huì )訪(fǎng)問(wèn)到的非自動(dòng)變量(Non-automatic variables)
3). 多線(xiàn)程應用中被幾個(gè)任務(wù)共享的變量
回答不出這個(gè)問(wèn)題的人是不會(huì )被雇傭的。我認為這是區分C程序員和嵌入式系統程序員的最基本的問(wèn)題。嵌入式系統程序員經(jīng)常同硬件、中斷、RTOS等等打交道,所用這些都要求volatile變量。不懂得volatile內容將會(huì )帶來(lái)災難。
請問(wèn)C++的類(lèi)和C里面的struct有什么區別?
請講一講析構函數和虛函數的用法和作用?
全局變量和局部變量有什么區別?實(shí)怎么實(shí)現的?操作系統和編譯器是怎么知道的?
【c++面試題】相關(guān)文章:
C/C++面試題目12-12
精選C++面試題及答案10-03
C,C++的幾個(gè)面試題小集12-27
一個(gè)C/C++編程面試題12-20
嵌入式C/C++面試題201611-12
華為C++筆試題12-25
聯(lián)想C++筆試題12-24
C++筆試實(shí)例分析12-19
Sony C++筆試題12-19