1. 程式人生 > >c語言const關鍵字與巨集的區別

c語言const關鍵字與巨集的區別

這是因為和巨集比起來:
1. const修飾的是一個變數,所以會在程式碼編譯階段進行語法檢查。
而巨集只會在預編譯階段進行簡單的替換動作;
2. 使用const修飾的是一個變數,具有具體的資料型別,所以編譯器會進行型別檢查。
3. 可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。
以常見的strcpy函式為例,
#include <string.h>
char *strcpy(char *dest, const char *src);
使用const修飾了char *src引數,這表示在strcpy函式內部是不能向src這個char指標指向的位置寫入資料的。
如果有寫入資料,則編譯器就會報錯。
4. 可以節省記憶體空間,避免不必要的記憶體分配。
因為const修飾的是變數,所以在記憶體中只有一份拷貝;
而巨集定義只會在預編譯階段進行簡單的替換動作,所以使用巨集的地方都會被替換掉。