嵌入式筆試解答題

2021-06-19 14:14:12 字數 2719 閱讀 5994

1.static有什麼用途?(請至少說明兩種)

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

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

3) 在模組內,乙個被宣告為靜態的函式只可被這一模組內的其它函式呼叫。那就是,這個函式被限制在宣告它的模組的本地範圍內使用

2.引用與指標有什麼區別?

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

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

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

3. 預處理器標識#error的目的是什麼?

#error 

停止編譯並顯示錯誤資訊

4.關鍵字const有什麼含意?

1)唯讀。

2)使用關鍵字const也許能產生更緊湊的**。

3)使編譯器很自然地保護那些不希望被改變的引數,防止其被無意的**修改。

5. #include 和  #include 「filename.h」 有什麼區別?

答:對於#include  ,編譯器從標準庫路徑開始搜尋 filename.h

對於#include  「filename.h」 ,編譯器從使用者的工作路徑開始搜尋 filename.h

6. 關鍵字volatile有什麼含意?並給出三個不同的例子。

乙個定義為volatile的變數是說這變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的值了。精確地說就是,優化器在用到這個變數時必須每次都小心地重新讀取這個變數的值,而不是使用儲存在暫存器裡的備份。

下面是volatile

變數的幾個例子:

1) 並行裝置的硬體暫存器(如:狀態暫存器)

2)乙個中斷服務子程式中會訪問到的非自動變數(non-automatic variables)

3)多執行緒應用中被幾個任務共享的變數

7. 

嵌入式系統總是要使用者對變數或暫存器進行位操作。給定乙個整型變數

a,寫兩段**,第乙個設定a的

bit 3

,第二個清除a 的

bit 3

。在以上兩個操作中,要保持其它位不變。

#define bit3 (0x1 << 3)

static int a;

void set_bit3(void)

void clear_bit3(void)

8. 嵌入式系統經常具有要求程式設計師去訪問某特定的記憶體位置的特點。在某工程中,要求設定一絕對位址為0x67a9的整型變數的值為0xaa55。

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa55;

9 . 下面的**輸出是什麼,為什麼?

void foo(void)

這個問題測試你是否懂得c語言中的整數自動轉換原則,我發現有些開發者懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是">6"。

原因是當表示式中存在有符號型別和無符號型別時所有的運算元都自動轉換為無符號型別。

因此-20變成了乙個非常大的正整數,所以該表示式計算出的結果大於6。

10 . 用預處理指令#define 宣告乙個常數,用以表明1年中有多少秒(忽略閏年問題)

#define seconds_per_year (60 * 60 * 24 * 365)ul

11.寫乙個「標準」巨集min,這個巨集輸入兩個引數並返回較小的乙個。

#define min(a,b) ( (a) <= (b) ? (a) : (b) )

12.用變數a給出下面的定義

a) 乙個整型數(int a)

b) 乙個指向整型數的指標(int *a)

c) 乙個指向指標的的指標,它指向的指標是指向乙個整型數(int**a)

d) 乙個有10個整型數的陣列(int a[10])

e) 乙個有10個指標的陣列,該指標是指向乙個整型數的(int *a[10])

f) 乙個指向有10個整型數陣列的指標(int (*a)[10])

g) 乙個指向函式的指標,該函式有乙個整型引數並返回乙個整型數(int (*a)(int))

13.已知乙個陣列table,用乙個巨集定義,求出資料的元素個數。

#define ntbl

#define ntbl (sizeof(table)/sizeof(table[0]))

14.用兩個棧實現乙個佇列的功能?

設2個棧為a,b, 一開始均為空.入隊: 

將新元素push入棧a;出隊: 

(1)判斷棧b是否為空; 

(2)如果不為空,則將棧a中所有元素依次pop出並push到棧b; 

(3)將棧b的棧頂元素pop出;這樣實現的隊列入隊和出隊的平攤複雜度都還是o(1), 

未完待續。。。。。。

嵌入式簡答題

問題 1 何謂半主機方式?半主機是一種除錯機制,目標機可借助該機制將應用程式發出的i o請求 給主機處理,而不是目標機本身來處理i o請求。問題 2 什麼是映像檔案?什麼是映像檔案的載入檢視和執行檢視。1.映像檔案是乙個計算機上的可執行檔案,在執行之前被載入到計算機的儲存器中。通常,乙個映像檔案中包...

嵌入式筆試題

考查逗號表示式 main 這段程式的輸出是 a c 3 d 3 b c 5 d 3 c c 3 d 5 d c 5 d 5 應該選c。c語言提供一種特殊的 運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如 3 5,6 8 稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2...

嵌入式 筆試題

指出下列程式的執行結果 int main memcpy a 3,a,5 for int i 0 i 10 i return 0 解答 0 1 2 0 1 5 6 7 8 9 注意 1 陣列a作為引數時,轉化為普通指標 a 3 按照char長度計算 2 memcpy的原型是 void memcpy v...