C 面試題匯集

2022-09-02 04:51:09 字數 1905 閱讀 7220

**自:

1.在c++ 程式中呼叫被c 編譯器編譯後的函式,為什麼要加extern 「c」?

答:首先,extern是c/c++語言中表明函式和全域性變數作用範圍的關鍵字,該關鍵字告訴編譯器,其宣告的函式和變數可以在本模組或其它模組中使用。

通常,在模組的標頭檔案中對本模組提供給其它模組引用的函式和全域性變數以關鍵字extern宣告。extern "c"是連線申明(linkage declaration),被extern "c"修飾的變數和函式是按照c語言方式編譯和連線的。作為一種物件導向的語言,c++支援函式過載,而過程式語言c則不支援。函式被c++編譯後在符號庫中的名字與c語言的不同。例如,假設某個函式的原型為:void foo( int x, int y );該函式被c編譯器編譯後在符號庫中的名字為_foo,而c++編譯器則會產生像_foo_int_int之類的名字。這樣的名字包含了函式名、函式引數數量及型別資訊,c++就是靠這種機制來實現函式過載的。

所以,可以用一句話概括extern 「c」這個宣告的真實目的:解決名字匹配問題,實現c++與c的混合程式設計。

2.標頭檔案中的ifndef/define/endif有什麼作用?

答:這是c++預編譯標頭檔案保護符,保證即使檔案被多次包含,標頭檔案也只定義一次。

3. #include與 #include "file.h"的區別?

答:前者是從標準庫路徑尋找和引用file.h,而後者是從當前工作路徑搜尋並引用file.h。

4.評價一下c/c++各自的特點

答:c語言是一種結構化語言,面向過程,基於演算法和資料結構,所考慮的是如何通過乙個過程或者函式從輸入得到輸出;

c++是物件導向,基於類、物件和繼承,所考慮的是如何構造乙個物件模型,讓這個模型能夠契合與之對應的問題,通過獲取物件的狀態資訊得到輸出或實現過程控制。

5.const 有什麼用途?

答:在c/c++中,(1)可以定義const常量,(2)修飾函式的返回值和形參;

在c++中,還可以修飾函式的定義體,定義類的const成員函式。被const修飾的東西受到強制保護,可以預防意外的變動,提高了程式的健壯性。

6.const和#define有什麼區別?

答:(1)const和#define都可以定義常量,但是const用途更廣。

(2)const 常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤。

(3) 有些整合化的除錯工具可以對const 常量進行除錯,但是不能對巨集常量進行除錯。

7.關於sizeof小結的。

答:sizeof計算的是在棧中分配的記憶體大小。

(1) sizeof不計算static變數占得記憶體;

(2) 指標的大小一定是4個位元組,而不管是什麼型別的指標;

(3) char型佔1個位元組,int佔4個位元組,short int佔2個位元組

long int佔4個位元組,float佔4位元組,double佔48位元組,string佔4位元組

乙個空類佔1個位元組,單一繼承的空類佔1個位元組,虛繼承涉及到虛指標所以佔4個位元組

(4) 陣列的長度:

若指定了陣列長度,則不看元素個數,總位元組數=陣列長度*sizeof(元素型別)

若沒有指定長度,則按實際元素個數類確定

ps:若是字元陣列,則應考慮末尾的空字元。

#includeusing 

namespace

std;

intmain();

int len = sizeof(a) / sizeof(int

);int

temp;

for(int i = 0; i for (int j = 0; j < len; j++)

cout

<","

;return0;

}//by 何問起 hovertree.com

C 面試題匯集

1.在c 程式中呼叫被c 編譯器編譯後的函式,為什麼要加extern c 答 首先,extern是c c 語言中表明函式和全域性變數作用範圍的關鍵字,該關鍵字告訴編譯器,其宣告的函式和變數可以在本模組或其它模組中使用。通常,在模組的標頭檔案中對本模組提供給其它模組引用的函式和全域性變數以關鍵字ext...

Android常見面試題匯集

彙總一 1.intent的幾種有關activity啟動的方式有哪些,你了解每個含義嗎?把這個作為面試題也是考察下,可以大概了解到它對android的了解程度,多移動開發的認識。彙總二 優勢 一 開放性 三 豐富的硬體選擇 五 無縫結合的google應用支援 缺點 一 安全和隱私 二,開發商自定義,不...

C 面試題之i 面試題

i 面試題1.cpp 中國台灣某著名防毒軟體公司2005年10月面試題 int i 3,j 4 i?i j printf d d n i,j a.3 3 b.4 4 c.3 4 d.4 3 答案b i 面試題2.cpp 中國某著名計算機金融軟公司2005年面試題 int x 1,j 2 int k ...