閱讀屋>面試> c面試題及答案詳解

c面試題及答案詳解

c面試題及答案詳解

1、三種基本的資料模型

答:按照資料結構型別的不同,將資料模型劃分為層次模型、網狀模型和關係模型。

2、結構與聯合有和區別?

答:(1). 結構和聯合都是由多個不同的資料型別成員組成, 但在任何同一時刻, 聯合中只存放了一個被選中的成員(所有成員共用一塊地址空間), 而結構的所有成員都存在(不同成員的存放地址不同)。

(2). 對於聯合的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對於結構的`不同成員賦值是互不影響的

3、什麼是預編譯,何時需要預編譯?

答:預編譯又稱為預處理,是做些程式碼文字的替換工作。處理#開頭的指令,比如複製#include 包含的檔案程式碼,#define 宏定義的替換,條件編譯等,就是為編譯做的預備工作的階段,主要處理#開始的預編譯指令,預編譯指令指示了在程式正式編譯前就由編譯器進行的操作,可以放在程式中的任何位置。

c 編譯系統在對程式進行通常的編譯之前,先進行預處理。c 提供的預處理功能主要有以下三種:1)宏定義 2)檔案包含 3)條件編譯

1、 總是使用不經常改動的大型程式碼體。

2、程式由多個模組組成,所有模組都使用一組標準的包含檔案和相同的編譯選項。在這種情況下,可以將所有包含檔案預編譯為一個預編譯頭。

4、描述記憶體分配方式以及它們的區別?

答:1) 從靜態儲存區域分配。記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static 變數。

2) 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集。

3) 從堆上分配,亦稱動態記憶體分配。程式在執行的時候用 malloc 或 new 申請任意多少的記憶體,程式設計師自己負責在何時用 free 或 釋放記憶體。動態記憶體的生存期由程式設計師決定,使用非常靈活,但問題也最多

5、區域性變數能否和全域性變數重名?

答:能,區域性會遮蔽全域性。要用全域性變數,需要使用"::"

區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同一個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義一個同名的區域性變數,而那個區域性變數的作用域就在那個迴圈體內

6、如何引用一個已經定義過的全域性變數?

答 、可以用引用標頭檔案的方式,也可以用 extern 關鍵字,如果用引用標頭檔案方式來引用某個在標頭檔案中宣告的全域性變數,假定你將那個變數寫錯了,那麼在編譯期間會報錯,如果你用 extern 方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連線期間報錯。

7、全域性變數可不可以定義在可被多個.C 檔案包含的標頭檔案中?為什麼?

答 、可以,在不同的 C 檔案中以 static 形式來宣告同名全域性變數。

可以在不同的 C 檔案中宣告同名的全域性變數,前提是其中只能有一個 C 檔案中對此變數賦初值,此時連線不會出錯。

8、語句 for( ;1 ;)有什麼問題?它是什麼意思?

答 、和 while(1)相同,無限迴圈。

9、do„„while 和 while„„do 有什麼區別?

答 、前一個迴圈一遍再判斷,後一個判斷以後再迴圈。


【c面試題及答案詳解】相關文章: