C語言關鍵字之const

目錄

前言

1.const功能

2.const實例

2.1 const修飾一個變量

2.2 const修飾指針變量


前言

初學C語言時,對於const關鍵字的理解僅僅停留在“不可改變”這一層意思上。本文總結一下const關鍵字在各種情況下的使用方法,及其功能。後續如果遇到新的使用情況會隨時更新。

1.const功能

const修飾的變量,該變量沒有寫權限,只有讀權限。所以也可稱被const修飾的變量爲常量。後續各種用法本質都遵循這句話。

2.const實例

2.1 const修飾一個變量

①變量被const修飾時,必須在定義時進行賦值,因爲被const修飾的變量沒有寫權限,如果不在定義時賦值,編譯會報警告。如果試圖對該變量賦值,編譯會報錯。

②const在修飾變量變量時,位置不做要求。

void function(void)
{
    int a;
    const int test_1;          //沒有賦值,編譯會報警告!
    const int test_2 = 10;     //正確賦值
    int const test_3 = 11;     //const位置變化無影響

    test_1 = 9;                //試圖賦值,編譯報錯!
    a = test_2;                //可以讀,合法
}

2.2 const修飾指針變量

const在修飾指針變量時,容易混淆。

int a = 100;
int b = 200;

/*1.const修飾*test_1,將test_1作爲左值合法,將*test_1作爲左值非法*/
const int *test_1=&a;        
test_1 = &b;                //使用test_1做左值,合法
printf("%d",*test_1);       //輸出結果爲:200

*test_1 = 200;             //使用*test_1做左值,非法

/*2.const修飾test_2,將test_2作爲左值非法,將*test_2作爲左值合法*/
int * const p2=&a; 
*test_2=300;                //使用*test_2做左值,合法
printf("%d",*test_2);       //輸出結果爲:300

test_2=&b;                  //使用test_2做左值,非法

/*3.const分別修飾*test_3,test_3,將*test_3,test_3作爲左值都非法*/
const int * const test_3=&a;
test_3 = &b;               //使用test_3做左值,非法
*test_3 = 100;             //使用*test_3做左值,非法

只要記住const只鎖定跟他相鄰的變量即可。即:

當const放在 * 之前,修飾的是*test,此時如果對*test賦值就不合法,但是對test賦值合法。

當const放在*之後,修飾的就是test,此時如果對test賦值就不合法,但是對*test賦值合法。

當const放在*之前和之後,那麼對*test和test賦值都不合法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章