25 個最常見的 C 面試問題和答案 [對於應屆生]
已發表: 2020-12-18C 是一種功能強大的通用編程語言,支持過程式、命令式和結構化範式。 它用於為各種計算機架構(PLC、嵌入式系統等)開發操作系統、數據庫和應用軟件。 C 是一種優秀的初學者友好語言,具有簡單的學習曲線。
任何有志從事軟件開發事業的人都必須掌握 C 的基礎知識。一旦你了解了 C 編程語言的精髓,你就可以準備好迎接 C 面試了!
在這篇博客中,我們將帶您了解一些最常見的 C 面試問題。 通常,工作面試從測試您對該主題(在本例中為 C 編程語言)的基本知識開始,然後逐漸探索您在該領域的實踐技能。
所以,事不宜遲,讓我們來看看 25 個最常見的 C 面試問題!
C 面試問答
- C語言的核心特點是什麼?
C編程語言是:
- 中級——C 結合了低級和高級語言的最佳特性,創建了一種中級、精煉的編程語言。
- 結構化——C 是一種結構化語言,這意味著 C 程序被分割成多個部分。
- 可移植性——一旦你用 C 語言編寫了一個程序,你就可以在任何機器上運行它,只需極少或無需改動。
- 快速——C 使用各種數據類型和運算符,使其非常快速和高效。
- 可擴展——C 具有高度可擴展性,因為它可以無縫地適應新特性。
- 內存管理——C 有一個內置的內存功能,可以節省內存並提高 C 程序的效率。
- C 支持哪些數據類型?
C有四類數據類型:

- 基本數據類型
- 派生數據類型
- 枚舉數據類型
- 無效數據類型
- 用 C 語言解釋“懸空指針變量”。
在 C 編程中,指針指示現有變量的內存位置或地址。 但是,如果該變量被刪除並且指針指向相同的內存位置,則稱為懸空指針變量。
- 什麼是“指針上的指針”?
“指針上的指針”是指一個指針變量,它保存另一個指針變量的地址。 本質上,指針解引用兩次以指示指定指針變量中包含的數據。
- 定義一個“數組”。
數組是一種數據結構,以有組織的方式包含相同數據類型的多個元素。 數組通常有三種類型:一維、二維和三維。
- 什麼是靜態變量? 為什麼在 C 中使用靜態變量?
靜態變量是由“靜態”關鍵字聲明的變量。 靜態變量在多個函數調用之間保留其值。
靜態變量作為所有方法共享的公共值,在內存堆中只初始化一次,以減少內存使用。 雖然靜態變量最初初始化為零,但如果您更新變量的值,則將分配更新後的值。
- 定義變量的“範圍”。
變量的範圍是指聲明變量的代碼(函數)部分。 在 C 編程語言中,所有標識符都是靜態或詞法範圍的。
- 什麼是動態內存分配?
動態內存分配是在運行期間為 C 程序及其變量分配內存的過程。 當 malloc()、calloc() 和 realloc() 分配內存時,free() 函數釋放已使用的內存空間。
閱讀:SQL 面試問答
- 解釋 calloc() 和 malloc() 函數之間的區別。
在 C 中,calloc() 和 malloc() 都是從堆區域(動態內存)分配內存的內存分配函數。 兩個內存分配函數之間的主要區別在於 calloc() 加載所有分配的內存位置,值為 0 而 malloc() 不加載。
- 解釋“靜態內存分配”。
與在運行時分配內存的動態內存分配不同,靜態內存分配在編譯期間分配內存。 靜態內存分配不允許您在執行 C 程序時增加內存分配。 您可以使用堆棧/堆實現靜態內存,並使用“靜態”關鍵字分配內存。 一般來說,靜態內存分配比動態內存分配需要更多的內存空間來存儲變量。
- 命名一些 C 代幣?
Token 是一個標識符。 它通常是 C 程序中的最小單元。 常量、字符串、關鍵字、運算符、標識符和特殊字符是編寫 C 程序時使用的一些 C 標記。
- 如果沒有 main() 函數,C 代碼會編譯或執行嗎?
在沒有 main() 函數的情況下,C 程序將編譯而不是執行,因為 main() 函數是運行任何 C 程序所必需的。
- 定義“嵌套結構”。
當函數的元素或數據成員包含另一個結構的數據成員時,將創建嵌套結構。
- 區分實際參數和形式參數。
實際參數從主函數發送到細分函數,聲明為細分函數的參數稱為形式參數。

- 什麼是預處理器指令?
預處理器指令是一個內置的預定義函數,它作為編譯器的指令在編譯過程開始之前執行特定任務。 因此,預處理器指令總是在執行 C 程序之前執行。
- 定義“命令行參數”。
在 C 程序執行期間傳遞給 main() 函數的參數稱為命令行參數。 第一個參數表示參數的數量,由操作系統自動更新。 第二個參數(字符指針數組)始終包含字符串作為參數。
- 如何為函數分配參數?
有兩種方法可以將參數分配給函數:
- 按值調用 – 僅當您不想使用形式參數更改實際參數時才選擇此方法,因此您只需將值的副本作為參數發送給函數。
- 通過引用調用——在這種方法中,您發送實際參數的地址以使用形式參數修改它們。
查看:全棧開發人員面試問題
- 什麼是 C 中的“聯合”?
在 C 中,Union 是一種用戶定義的數據類型,可以在一個單元中存儲多種數據類型。 它只包含最大成員的內存,而不是所有成員的總內存。 由於聯合為聯合的所有成員分配共享空間,因此您一次只能訪問聯合中的一個變量。
- 解釋“遞歸”。
遞歸是指函數調用自身,調用自身的函數稱為遞歸函數。 遞歸函數分兩個階段發生:
- 纏繞階段——當遞歸函數調用自身並滿足所需條件時,纏繞階段結束。
- 展開階段——一旦到達捲繞階段,展開階段就會通過將控制權返回給原始調用來啟動。
- 如何在 C 中聲明一個函數?
您可以像這樣在 C 中聲明一個函數:
return_type function_name(形參列表)
{
功能體;
}
- sprintf() 函數有什麼作用?
sprintf() 函數用於打印字符串。 它獲取字符串中的字符總數。 此函數將數據傳輸到緩衝區,因此它不會在屏幕上打印輸出。 sprintf() 函數的語法是:
int sprintf ( char * str, const char * 格式, ... );
- 區分 getch() 和 getche() 函數?
在 C 程序中,getch() 函數從關鍵字中讀取單個字符。 由於它確實使用任何緩衝區,因此它不會在屏幕上顯示您輸入的數據。 相反,雖然 getche() 函數也從關鍵字中讀取單個字符,但它會在屏幕上顯示數據。
- 什麼是“Rvalue”和“Ivalue”?
Rvalue 是位於賦值運算符右側的表達式。 它被分配給位於賦值運算符上的 Ivalue。 左值只能引用變量而不是常量。
- 在 C 中命名不同的存儲類說明符。
在 C 中,有四個存儲說明符:

- 汽車
- 靜止的
- 登記
- 外部
- 用“”和<>聲明頭文件有什麼區別嗎?
如果使用“”聲明頭文件,編譯器會在當前工作目錄中搜索該頭文件,如果在該目錄中找不到該文件,則它會探查其他位置以找到該頭文件。 但是,如果使用 < > 聲明頭文件,編譯器會搜索內置路徑後面的文件。
查看: 15個面試技巧,讓你在求職面試中脫穎而出
報名參加世界頂尖大學的軟件工程課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
結論
所以,你去吧:25 C面試問題和答案,幫助你準備下一次工作面試。 儘管這些問題只觸及了 C 編程的表面,但希望它們能讓您了解您在 C 面試中可以期待什麼!
如果您有興趣了解有關全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
