c關鍵字const詳解

2021-09-26 04:34:46 字數 2410 閱讀 5280

最近被人問了個技術問題,感觸很深,就是關於const關鍵字的基本用法判斷,看到這個問題我其實挺開心的,因為去年我在書上記錄過c 語言的幾個常用關鍵字的基本用法,最近用的少了,都有點生疏遺忘了,技術就是一把容易生鏽的dao,得經常磨磨才不怕問~~

1.const修飾變數

const 關鍵字用的比較多的用法就是修飾全域性變數,是被修飾的變數不可更改,即只具有唯讀性;

兩個注意點:

(1)被const關鍵字修飾的變數必須初始化,不可以是不確定的

如:

const

int temp =0;

//正確用法

int count =0;

count = temp ; //正確用法,適合

temp = count ; //錯誤用法,temp值不可修改

const

int temp;

//錯誤用法,會導致編譯出錯

(2)通常使用define定義乙個巨集,如:#define pi 3.1415976,以後無論在**需要使用圓周率時,我們直接使用pi即可,而在編譯時預處理器會將所有的pi替換為3.1415976。這很方便,但是由於編譯器不會對其進行檢查,如果使用不慎就會引入錯誤,而且此種錯誤很難發現。而且,我們也無法得到pi的位址,不能向pi傳遞指標或引用。

為此,我們常使用const關鍵字修飾的變數來代替巨集。使用const宣告的變數雖然增加了分配空間,但是可以保證型別安全,並且可以得到其指標。const消除了預處理器的值替代的不良影響,並且提供了良好的型別檢查形式和安全性,所以理解了const關鍵字,對我們的程式設計是有很大的幫助的。

2.const 關鍵字修飾指標變數

首先區分兩個概念:

(1)常量指標:顧名思義,就是指標變數的值初始化以後相當於常量,不可修改;

(2)指標常量:指向常量的指標變數;

在宣告指標變數時,const關鍵字所處的位置,決定了其定義的指標變數的含義,例如我們定義:

(a)int * const p; 該語句表示指向整形的常量指標 ,它不能在指向別的變數,但指向(變數)的值可以修改。

(b)const int * p; 該語句表示指向整形常量 的指標,它指向的值不能修改。

(c)int const * p; 該語句與(b)的含義相同,表示指向整形常量 的指標,它指向的值不能修改。

(d)const int *const p; 該語句表示指向整形常量 的常量指標 。它既不能再指向別的常量,指向的值也不能修改。

(e)int const *const p; 該語句與d的含義相同,表示指向整形常量 的常量指標 。它既不能再指向別的常量,指向的值也不能修改。

這寫定義容易讓人糊塗,但有一點技巧可以幫助我們理解。就是看const關鍵字的右邊跟著的是什麼?當const關鍵字的右邊是型別時,則表示值是常量;當const關鍵字的右邊是指標變數,則表示指標本身是常量

3.const關鍵字修飾的函式形參

const關鍵字也經常用來修飾函式的形參。關鍵字const修飾函式形參時,通常用於引數為指標或引用的情況,且只能修飾輸入引數。若輸入引數採用「值傳遞」方式,由於函式將自動產生臨時變數用於複製該引數,該引數本就不需要保護,所以不用const修飾。

const關鍵字修飾函式輸入引數的形式如:void function(const int * a ); 或者void function(const int & a);都是可以的。在c標準庫中就很多這樣的應用,例如字串處理函式:

字串拷貝函式:char *strcpy(char *strdest,const char *strsrc)

返回字串長度函式:int strlen(const char *str)

以上兩個函式就是將源字串使用const關鍵字保護起來,防止不注意的修改改變了源字串的值。

佷顯然,採用const關鍵字修飾函式形參,就是為了保護輸入引數。在呼叫函式的時候,用相應的變數初始化const常量,則在函式體中,按照const所修飾的部分進行常量化,如形參為const int * a,則不能對傳遞進來的指標所指向的內容進行改變,保護了原指標所指向的內容;如形參為const int & a,則不能對傳遞進來的引用物件進行改變,保護了原物件的屬性。

4.const關鍵字修飾的函式返回值

const關鍵字有時候也會用來修飾函式的返回值,這種情況一般是用來修飾返回的指標或引用,保護指標指向的內容或引用的內容不被修改。例如:

const char * function(void);

這種用法比較少見,在此僅提及一下。

綜上所述,const關鍵字不但強大,而且對我們的程式設計確實有很大的幫助,前提是我們真正的理解了它的用法。

關鍵字const詳解

關鍵字const 1 用關鍵字const定義變數指所定義的常量。即恆定的變數,即不可改變的變數。例 const int i 10 此時 i 就是乙個整型的常量,其值不能改變。在c 中如果用const定義乙個物件,那麼物件中的成員變數就是常數,不能改變 只能為初始化的值 如果用const定義類中的成員...

關鍵字const用法詳解

摘自 物件導向是c 的重要特性,但是c 在c的基礎上新增加的幾點優化也是很耀眼的 以下幾點很重要,學不好後果會很嚴重 const 限定符 1.宣告變數只能被讀 const int i 5 int j 0 i j 非法,導致編譯錯誤 j i 合法 2.必須初始化 const int i 5 合法 co...

關鍵字const的詳解

1 const變數不是常數,是乙個變數 左值 只是你不能修改它 2 在定義該const變數時,必須需要對它進行初始化 3 對指標來說,可以指定指標本身為const,也可以指定指標所指的資料為const,或二者同時指定為const 4 在乙個函式宣告中,const可以修飾形參,表明它是乙個輸入引數,在...