C 語言常見面試題

2021-06-21 13:48:00 字數 1839 閱讀 9753

1 #define 與 typedef的區別

(1 #define是預處理指令,在預處理時進行替換,其後邊沒有分號;

(2 typedef是在編譯時處理的,

使用時注意:

1例:#define pint int *

typedef int *  pint

pint a,b;  相當於int *a,b; 只定義了乙個指標

pint a,b;  是定義了兩個指標,(#define 只是簡單的替換,而typedef 是給已經存在的型別起個別名,是宣告了一種型別)

2 例 :接上例

const pint a;和const pint a;區別

const pint a;(相當於 const int *a,const 限定的是*a,a指向的內容唯讀)

const pint a;(pint是一種型別,限定的是a,a不能指向別處)

2 帶引數的巨集定義和函式的比較

巨集定義的優點:

1 速度快,省去了函式的許多額外的時間開銷(儲存上下文資訊,引數入棧,引數拷貝)

2 通用性強,巨集的引數不進行型別檢查,乙個巨集可以帶各種型別引數

巨集定義的缺點:

1 編譯後的**變大,由於是簡單的替換,尤其是頻繁時使用該巨集,或是巨集巢狀;

2 由於不進行引數型別檢查,當出現型別錯誤時除錯會很麻煩

3 巨集定義不能使用函式指標,有時很不方便;

4 巨集會對引數進行多次計算,如min(a++,b)當巨集中用了幾次a,a就自加了幾次;

3 指標陣列和陣列指標(乙個由指標組成的陣列和乙個指向陣列的指標)

乙個有10個指標的陣列  int *a[10];

乙個指向有10個整型數陣列的指標 int (*a)[10] (使用時也是*a[3]代表其第四個資料;用法:printf(「%d」,(*a)[3]);

4 static的作用

1 在函式體內時,如果乙個變數被定義成static變數,該變數被存在data區,表示該函式被呼叫過程中,該變數的值保持不變,(變數保持上次呼叫後的值)

2 當變數在模組內而在函式外時,表示該變數只能被本模組內的函式使用,不能被其他模組的函式使用,

3 當乙個函式被定義成const時,只該函式只能被本模組的函式呼叫;

使用static時注意: 乙個全域性變數定義成static變數,則別的模組不能通過extern 使用該變數,但可以定義乙個名字相同的變數,但不是同乙個變數;就像全域性變數a 和區域性變數a不是乙個變數一樣;

5 const 的使用

const的含義 只要能說出const意味著「唯讀」就可以了

下邊幾個定義的含義

int const a;

const int a;這兩個的含義相同

const int *a; const限定的是*a

int * const a;  限定的是a(不能指向別處)

int const * const a;(指向的內容不變,指標也不能指向別處)

6 volatile

精確地說就是,優化器在用到這個變數時必須每次都小心地重新讀取這個變數的值,而不是使用儲存在暫存器裡的備份

7  下邊的**輸出

void foo(void)

當表示式中存在有符號型別和無符號型別時所有的運算元都自動轉換為無符號型別 ,則-20成了乙個很大的數

8 what will print out;

main()

answer :both are empty string;

9  sizeof()和strlen

sizeof() 算\0;strlen不算

10 陣列與指標

陣列名相當於指標常量

int a[10];中a 相當於int * const a;

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 ...

C 常見面試題

vector中這兩個屬性很容易弄混淆。size是當前vector容器真實占用的大小,也就是容器當前擁有多少個容器。capacity是指在發生realloc前能允許的最大元素數,即預分配的記憶體空間。當然,這兩個屬性分別對應兩個方法 resize 和reserve 使用resize 容器內的物件記憶體...