1、嵌入式與單片機的區別
從軟體上,行業里經常把芯片中不帶MMU(Memory Management Unit記憶體管理單元)從而不支持虛擬地址,只能裸奔或運行RTOS(實時作業系統,例如ucos、華為LiteOS、RT-Thread、FreeRTOS)的system,叫做單片機(例如STM32、NXP)
而把芯片自帶MMU可以支持虛擬地址,能夠跑Linux、Vxworks、WinCE、Android這樣的“高級”的system,叫做嵌入式
2、Heap(堆)和Stack(堆疊)的區別
Heap(堆)上的空間是手動分配和釋放的,Stack(堆疊)上的空間是自動分配和釋放的
3、全域變數和區域變數的區別
1、作用域不同:全域變數作用域為整個程式,區域變數的作用域為當前陳述句塊;
2、記憶體存盤方式:全域變數在全域資料區(靜態資料區),區域變數存盤在堆疊上;
3、生命周期不同:全域變數的生命周期和程式周期一樣,區域變數隨著陳述句塊的結束而結束;
4、當區域變數和全域變數同名時,優先使用區域變數,使用全域變數是要用域成員運算子;
4、結構體和聯合體的區別
1、結構體和聯合體都是由不同的資料型別組成,但在任何時候,聯合體只存在一個被選中的成員,結構體的所有成員都存在;
2、在結構體中,各成員占有自己的存盤空間,總大小等于各成員的大小之和;
3、在聯合體中,所有成員共用一塊存盤空間,其大小等于聯合體中最大成員的大小;
5、陣列和指標的區別
1、指標要么在靜態存盤區,要么在堆疊上被創建,陣列名對應著一塊記憶體,其容量與地址在生命周期內保持不變;
2、指標可以隨時指向任意型別的記憶體塊,它的特征是可變,比陣列靈活,但也危險;
6、指標函式和函式指標的區別
1、指標函式是一個函式,它回傳值是一個指標;
2、函式指標是一個指標,這個指標所指的物件是一個函式;
7、常量與變數的區別
1、常量是只讀不可寫,變數可讀可寫;
2、常量必須初始化,變數可以不初始化;
3、常量不可以尋址,它的地址不可賦給非常量指標,變數可以尋址;
8、指標自增自減與變數自增自減有什么區別
指標自增自減是改變指標所指的物件;變數自增自減是改變變數的值,
9、#error的作用是什么
編譯程式時,只要遇到#error就會跳出一個編譯錯誤
10、#include <file.h> 與#include “file.h”有什么區別
#include <file.h> 表示該檔案存在編譯器指定的標準頭檔案存放處;#include “file.h”表示該檔案在用戶當前的作業目錄下
頭檔案中的 ifdef /define endif的作用:防止頭檔案被重復參考,
10、常見的條件陳述句比較寫法
1、bool型別 if(flag)建議使用
2、int型別 if(value != 0)建議使用
3、float if( x > -EPSION && x < EPSION )建議使用
4、指標 if(p == NULL)建議使用,強調p為指標;不建議if(p == 0)會讓人誤解為int型別
11、用#define實作宏并求最大值最小值
#define MAX(x,y) ((x)>(y))?(x):(y) #define MIN(x,y) ((x)<(y))?(x):(y)
12、break陳述句與continue陳述句有什么區別
continue陳述句只能出現在回圈陳述句中,表示結束本次回圈;break陳述句還可以出現在switch陳述句中,表示結束switch陳述句,在回圈陳述句內表示結束整個回圈,
13、static關鍵字的作用
1、用于全域變數:表示該變數是靜態全域變數,作用域為當前檔案;
2、用于函式:該函式為靜態函式,只能在本檔案中呼叫,靜態函式在記憶體中只有一份,普通函式在記憶體中維持一份拷貝;
3、用作區域變數:為靜態區域變數,只初始化一次,之后呼叫函式都是上次函式退出時的值,即改變變數的生存周期為整個程式運行的時間段內;
4、static成員函式:表示這個函式屬于此類而不屬于此類的任何物件,不能訪問非靜態變數和函式,該函式在該類中是唯一的,
14、const關鍵字的作用
1、修飾一般變數和陣列:修飾符可在型別說明符前,也可在型別說明符后;
2、修飾常指標:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/259641.html
標籤:其他
上一篇:發現一款牛逼的 IDEA 插件:檢測代碼漏洞,一鍵修復!
下一篇:Spring應用背景關系生命周期
