c語言中關於const的使用

2021-08-11 05:37:18 字數 1162 閱讀 3737

const是c語言中乙個十分重要的修飾 我總結了它的含義使用以及作用如下

1.修飾的資料型別是常型別,常型別的變數或物件的值不能被改變

const int i=10;

int a[i];等價於int a[10];

2.便於進行型別檢查,使編譯對處理內容有更多的了解,消除了一些隱患。

3.方便的進行引數的調整和修改(類似於巨集定義)

4.可以保護被修飾的東西,防止被意外修改,增強程式的健壯性。

5.可以節省空間,避免不必要的記憶體分配(與巨集定義的本質區別)

#define的作用是給出立即數,每次呼叫時需要進行記憶體分配,會有若干份拷貝

const定義常量從彙編角度來看,只是得出了對應的記憶體位址,所以,const定義的常量在程式執行過程中只有乙份拷貝。

6.提高了效率。

編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為乙個編譯期間的常量,沒有了儲存和讀記憶體的操作,使得它效率也很高。

//陣列名是乙個const指標(int a等價於int *const a)

所以說不能a=b

7.const與指標

int * const p=&i; //p是const常量,不能再修改

*q=26;//ok

q++;//error

const int* p=&i;//不能通過這個指標修改那個變數  

*p=26;//error (*p)是const常量

i=26;//ok

p=&j;//ok

int const* p=&i;(等價於const int* p=&i;)

注意:只有兩種含義位址p不能修改或不能通過位址p修改

判斷方法,第一種const在*後,第二種const在*前

8.轉換

可以把乙個非const得值轉換為const的

void f(const int* x);

int a=15;

f(&a);//ok

當要傳遞的引數型別比位址大的時候,這是常用的手段:既能用比較少的位元組數傳遞給引數,又能避免函式對外面的變數的修改。

這是傳遞結構體的常用方法

9.保護陣列值

函式內部可以修改陣列的值,為了保護陣列不被函式破壞,可以設定引數為const

int(const int a,int len);

C語言中的CONST使用

c中的const使用 const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性。const的使用是c語言中乙個比較微妙的地方,請看下面幾個問題。問題 const變數 和 常量 為什麼下面的例子在使用乙個const變數來初始化陣列,ansi c...

C語言中const的使用

const and pass by value 使用乙個常量字首 const 可以避免傳址變數的修改 void f const string s 一些開發者即使針對傳值變數也用 const void f const int n n is passed by value,why const?const...

C語言中const的使用

可以使用const關鍵字對變數加以限定 const int maxnum 100 班級的最大人數 這樣 maxnum 的值就不能被修改了,任何對 maxnum 賦值的行為都將引發錯誤 maxnum 90 錯誤,試圖向 const 變數寫入資料 我們經常將 const 變數稱為常量 constant ...