網站首頁 工作範例 辦公範例 個人範例 黨團範例 簡歷範例 學生範例 其他範例 專題範例

C工程師筆試題

欄目: 筆試題目 / 釋出於: / 人氣:2.47W

C的資料型別包括:整型、字元型、實型或浮點型(單精度和雙精度)、列舉型別、陣列型別、結構體型別、共用體型別、指標型別和空型別。下面就由本站小編為大家介紹一下C工程師筆試題的文章,歡迎閱讀。

C工程師筆試題

C工程師筆試題篇1

1、關鍵字static的作用是什麼?

這個簡單的問題很少有人能回答完全。在C語言中,關鍵字static有三個明顯的作用:

1). 在函式體,一個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。

2). 在模組內(但在函式體外),一個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問。它是一個本地的全域性變數。

3). 在模組內,一個被宣告為靜態的函式只可被這一模組內的其它函式呼叫。那就是,這個函式被限制在宣告它的模組的本地範圍內使用。(本地化資料和程式碼範圍的好處和重要性)。

2、“引用”與指標的區別是什麼?

答 、1) 引用必須被初始化,指標不必。

2) 引用初始化以後不能被改變,指標可以改變所指的物件。

3) 不存在指向空值的引用,但是存在指向空值的指標。

指標通過某個指標變數指向一個物件後,對它所指向的變數間接操作。程式中使用指標,程式的可讀性差;而引用本身就是目標變數的別名,對引用的操作就是對目標變數的操作。

流操作符<<和>>、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用。

3、.h頭檔案中的ifndef/define/endif 的作用?

答:防止該標頭檔案被重複引用。

4、#include 與 #include “file.h”的區別?

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

5、描述實時系統的基本特性

答 :在特定時間內完成特定的任務,實時性與可靠性。

6、全域性變數和區域性變數在記憶體中是否有區別?如果有,是什麼區別?

答 :全域性變數儲存在靜態資料區,區域性變數在堆疊中。

7、什麼是平衡二叉樹?

答 :左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對值不大於1。

8、堆疊溢位一般是由什麼原因導致的?

答 :1.沒有回收垃圾資源2.層次太深的遞迴呼叫

9、氣泡排序演算法的時間複雜度是什麼?答 :O(n^2)

10、什麼函式不能宣告為虛擬函式?答:constructor

C工程師筆試題篇2

1、佇列和棧有什麼區別?答:佇列先進先出,棧後進先出

2、不能做switch的引數型別答 :switch的引數不能為實型。

3、區域性變數能否和全域性變數重名?答:能,區域性會遮蔽全域性。要用全域性變數,需要使用”::”

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

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

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

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

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

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

6、語句for( ;1 ;)有什麼問題?它是什麼意思?答 、和while(1)相同,無限迴圈。

7、do„„while和while„„do有什麼區別?答 、前一個迴圈一遍再判斷,後一個判斷以後再迴圈。

8、statac 全域性變數、區域性變數、函式與普通全域性變數、區域性變數、函式

答 、全域性變數(外部變數)的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式, 靜態全域性變數當然也是靜態儲存方式。 這兩者在儲存方式上並無不同。這兩者的區別雖在於非靜態全域性變數的作用域是整個源程式, 當一個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。 而靜態全域性變數則限制了其作用域, 即只在定義該變數的原始檔內有效, 在同一源程式的其它原始檔中不能使用它。由於靜態全域性變數的作用域侷限於一個原始檔內,只能為該原始檔內的函式公用, 因此可以避免在其它原始檔中引起錯誤。從以上分析可以看出, 把區域性變數改變為靜態變數後是改變了它的儲存方式即改變了它的生存期。把全域性變數改變為靜態變數後是改變了它的作用域, 限制了它的使用範圍。

static函式與普通函式作用域不同。僅在本檔案。只在當前原始檔中使用的函式應該說明為內部函式(static),內部函式應該在當前原始檔中說明和定義。對於可在當前原始檔以外使用的函式,應該在一個頭檔案中說明,要使用這些函式的原始檔要包含這個標頭檔案

static全域性變數與普通的全域性變數有什麼區別:static全域性變數只初使化一次,防止在其他檔案單元中被引用; static區域性變數和普通區域性變數有什麼區別:static區域性變數只被初始化一次,下一次依據上一次結果值; static函式與普通函式有什麼區別:static函式在記憶體中只有一份,普通函式在每個被呼叫中維持一份拷貝

9、程式的記憶體分配

答:一個由c/C++編譯的程式佔用的記憶體分為以下幾個部分

1、棧區(stack)—由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。

2、堆區(heap)—一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由OS回收。注意它與資料結構中的堆是兩回事,分配方式倒是類似於連結串列,呵呵。

3、全域性區(靜態區)(static)—全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。程式結束後由系統釋放。

4、文字常量區—常量字串就是放在這裡的。程式結束後由系統釋放。

5、程式程式碼區—存放函式體的二進位制程式碼

例子程式

這是一個前輩寫的,非常詳細

//

int a=0; //全域性初始化區

char *p1; //全域性未初始化區

main

{

intb;棧

char s=”abc”; //棧

char *p2; //棧

char *p3=”123456″; //123456