C語言中const的用法

2021-07-09 19:24:47 字數 958 閱讀 3309

1、const的普通用法

const int n = 10;

意思很明顯,n是乙個唯讀變數,程式不可以直接修改其值。這裡還有乙個問題需要注意,即如下使用:int a[n];在ansi c中,這種寫法是錯誤的,因為陣列的大小應該是個常量,而n只是乙個變數。

2、const用於指標

const int *p;

int const *p;

int * const p;

在最後的一種情況下,指標是唯讀的(即p唯讀),而在另外兩種情況下,指標所指向的物件是唯讀的(即*p唯讀)。const 是乙個左結合的型別修飾符,它與其左側的型別修飾符一起為乙個型別修飾符,所以,int const 限定 *p,不限定p。int *const 限定p,不限定*p。

這裡有乙個簡便的區分方法:沿著*號劃一條線,如果const位於*的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;如果const位於*的右側,const就是修飾指標本身,即指標本身是常量。

3、const用於函式的位址傳遞引數

void foo(const int *p);

這種形式通常用於在陣列形式的引數中模擬傳值呼叫。也就是相當於函式呼叫者聲稱:"我給你乙個指向它的指標,但你不能去修改它。"如果函式編寫者遵循了這個約定,那麼就相當於模擬了值傳遞。這也是const最有用之處了:用來限定函式的形參,這樣該函式將不會修改實參指標所指的資料。這裡注意了,是函式不應該去修改而不是不能修改,也就是說const不能阻止引數的修改(原因見上)。

4、const用於限定函式的返回值

const int foo();

const struct mytype foo(); 

上述寫法限定函式的返回值不可被更新,當函式返回內部的型別時,已經是乙個數值,當然不可被賦值更新,所以,此時const無意義,最好去掉,以免困惑。當函式返回自定義的型別時,這個型別仍然包含可以被賦值的變數成員,所以,此時有意義。

C語言中const的用法

關鍵字const用來定義常量,如果乙個變數被const修飾,那麼它的值就不能再被改變,我想一定有人有這樣的疑問,c語言中不是有 define嗎,幹嘛還要用const呢,我想事物的存在一定有它自己的道理,所以說const的存在一定有它的合理性,與預編譯指令相比,const修飾符有以下的優點 1 預編譯...

C語言中const的用法

const是c語言中的關鍵字,用來定義常變數。1 在使用const時有以下規則 const將變數變為唯讀。只有讀許可權,沒有寫許可權 資料型別對const無影響。如以下兩種定義無區別 int const a 10 不管const是在int前或後,都無影響。const int a 10 都對整形變數a...

c語言中const的用法

const修飾的資料型別是指常型別,常型別的變數或物件的值是不能被更新的。1.可以定 義const常量,具有不可變性。例如 const int max 100 int array max 2.便於進行型別檢查,使編譯器對處理內容有更多了解,消除了一些隱患。例如 void f const int i ...