考一考!嵌入式C面試題3道

2021-08-22 04:39:10 字數 937 閱讀 5795

題一:

關鍵字volatile在編譯時有什麼含義?並給出三個不同使用場景的例子(可以偽**或者文字描述)。

思考過後,再到下方尋找答案

題二:c語言中static關鍵字的具體作用有哪些 ?

思考過後,再到下方尋找答案

題三:請問下面三種變數宣告有何區別?請給出具體含義

int const *p;

int* const p;

int const* const p;

思考過後,再到下方尋找答案

題一答案:

用volatile關鍵字定義變數,相當於告訴編譯器,這個變數的值會隨時發生變化,每次使用時都需要去記憶體裡

重新讀取它的值,並不要隨意針對它作優化。

建議使用volatile變數的場所:

(1) 並行裝置的硬體暫存器

(2) 乙個中斷服務子程式中會訪問到的非自動變數(全域性變數)

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

題二答案: 

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

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

訪問。它是乙個本地的全域性變數。

在模組內,乙個被宣告為靜態的函式只可被這一模組內的其它函式呼叫。那就是,這個函式被限制在宣告它的

模組的本地範圍內使用。

static全域性變數與普通的全域性變數有什麼區別:static全域性變數只初使化一次,防止在其他檔案單元中被引用;

static函式與普通函式有什麼區別:static函式在記憶體中只有乙份,普通函式在每個被呼叫中維持乙份拷貝

題三答案:

乙個指向常整型數的指標

乙個指向整型數的常指標

乙個指向常整型數的常指標

16道嵌入式 語言面試題

預處理器 preprocessor 1.用預處理指令 define 宣告乙個常數,用以表明1年中有多少秒 忽略閏年問題 define seconds per year 60 60 24 365 ul 我在這想看到幾件事情 1 define 語法的基本知識 例如 不能以分號結束,括號的使用,等等 2 ...

嵌入式面試題C語言 一 陣列一道面試題

這道題在工作中實際程式設計很少能遇到,至少我沒有涉及到,但是低於陣列指標其實是一種深入理解或者說另一種思考的角度,這是一道面試題 int a 1.printf a 5 is d n a 5 2.printf 5 a is d n 5 a 這就是考題 這裡直接給出結果 6 6 在我試驗輸出這個結果的時...

嵌入式面試題

15 typedef 在c語言中頻繁用以宣告乙個已經存在的資料型別的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子 define dps struct s typedef struct s tps 以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢?...