應屆生嵌入式面試題總結 C

2021-10-10 01:33:45 字數 1211 閱讀 8306

型別

win32

win64

linux32

linux64

char11

11int444

4bool11

11short22

22long44

48long long88

88float44

44double88

88void *48

48注意:long型別在win32,win64和linux32作業系統中是4個位元組,但在linux64作業系統中是8個位元組。指標型別在32位作業系統中是4個位元組,在64位作業系統中是8個位元組。在編寫跨平台的軟體時盡量不要使用long型別。bool型別是c99標準新增的,占用乙個位元組,當值為ture時,實際儲存的是0x01;當值為false時,實際儲存的是0x00。

全域性變數:定義在函式外面的變數,初始值預設為0,作用域為整個程式,生命週期為整個程式執行期間,儲存位置為靜態儲存區。

區域性變數:函式內部定義的變數,初始值是隨機的,存放在棧空間。

靜態全域性變數:使用static修飾的全域性變數就叫做靜態全域性變數,與全域性變數唯一不同的地方在作用域:當前原始檔,別的檔案不能訪問該變數,解決了全域性變數重名的問題。

靜態區域性變數:使用static修飾的區域性變數就叫做靜態區域性變數,與區域性變數的區別是,靜態區域性變數存放在靜態儲存區,整個程式執行期間有效,具有記憶功能,只初始化一次,下次呼叫函式時,保留著上次的函式執行之後的值。

暫存器變數:不像其他變數那樣在記憶體中存放資料,而是在cpu的暫存器中暫存資料,使用暫存器變數比使用記憶體變數的操作速度快很多。只有整形和字元型變數可定義為暫存器變數,由於cpu暫存器有限,所以儘量減少使用數量和占用時間。用完之後馬上釋放;不能定義為全域性變數,也不能定義在結構體或類中。例:register int i = 0;

可以,主調函式必須用相同型別的結構體變數接收。

1,預處理(preprocessing):用於將所有的#include標頭檔案以及巨集定義替換成其真正的內容;

2,編譯(compilation):將經過預處理之後的程式轉換成特定彙編**的過程;

4,鏈結(linking):鏈結過程將多個目標檔案以及所需的庫檔案(.so等)鏈結成最終的可執行檔案(.exe)。

1,對函式返回值的限定

2,對函式引數的限定

指標使指向乙個特定記憶體位址的乙個變數。指標可以提高程式的編譯效率,是程式更加簡潔,可以有效地表示複雜的資料結構、動態分配記憶體、高效地使用陣列和字串等。

應屆生嵌入式面試題總結 嵌入式基礎

ram 簡稱隨機儲存器,掉電後資料會丟失,任何時候都可以讀寫,讀寫速度快 rom 簡稱唯讀儲存器,掉電後資料不會丟失,但資料不能隨意更新。上拉 將不確定的訊號固定在高電平,電阻同時其限流作用 下拉 將不確定的訊號固定在低電平 對於乙個邏輯電路的輸入端,該輸入端懸空,晶元上電後,該輸入端的電平不確定,...

嵌入式面試題

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

嵌入式面試題

1.main int ptr int a 1 printf d d a 1 ptr 1 這段程式的輸出是 a 2 2 b 2 1 c 2 5 d 以上均不是 2.考查自加操作 main 這段程式的輸出是 a i 4 j 2 b i 3 j 2 c i 3 j 4 d i 3 j 6 3.此題考查的是...