同樣都可以定義常量,const與#define相比有什麼不同?
1.const常量有資料型別,而巨集常量沒有資料型別。
2.編譯器可以對常量進行型別安全檢查,而巨集只進行字元替換,沒有安全檢查,而且在字元替換對過程中可以發生意想不到對錯誤(邊界效應).
#define n 2+3
double a = n/2;
我們預想a值是2.5,可實際的值3.5
3.define在編譯的預處理階段起作用,而const是在 編譯、執行的時候起作用。
int b =5;
const int *a = &b; //情況一
int const *a = &b; //情況二
int *const a = &b; //情況三
const int *const a = &b; //情況四
總結四種情況,只有兩種情況:
1.const位於*左側,則const修飾指標所指向的變數的'值'。即指標指向為常量.
雖然不可以修改指標a指向變數的值,但是我們可以修改指標a指向的位址。
注意:情況一和情況二相同。
2.const位於*右側,const就是修飾儲存在指標變數裡面的'位址',即指標變數本身就是常量。
錯誤:
以此類推.
c語言之const和static關鍵字
作用 被修飾的內容為靜態變數,編譯時即分配儲存空間,程式執行過程中不再分配。修飾變數 當我們在定義沒有關鍵字的區域性變數的時候,他在記憶體中儲存的方式是動態的,在每次到達定義變數的程式位置,則為其分配儲存空間,跳出 塊即結束其生命期。而使用static關鍵字修飾區域性變數,他在記憶體中靜態儲存,在編...
C語言之關鍵字
基本資料型別 short int long float double char unsigned signed 8個 復合資料型別 struct union enum 3個 語句結構 if esle do while for switch case default break continue go...
const關鍵字總結c
const成員函式只能呼叫const成員函式 const成員函式中不能改變成員變數的值,但是可以訪問所有變數 非const函式可以呼叫const函式 因為非const可能會修改屬性值,所以在const物件情況下,非const方法不能被呼叫,只能呼叫const方法 const函式可被非const過載,...