教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

const關(guān)鍵詞修飾參數(shù)【案例演示】

更新時間:2022年06月13日16時47分 來源:傳智教育 瀏覽次數(shù):

有時在定義函數(shù)時,在函數(shù)內(nèi)部,只想讓參數(shù)參與某種運算,不想改變參數(shù)的值,這時可以使用const關(guān)鍵字修飾形式參數(shù)。例如,定義一個函數(shù):void even(int num),用于判斷傳入的整數(shù)是否是偶數(shù),但在函數(shù)內(nèi)部并不想?yún)?shù)num發(fā)生任何改變,這時可以使用const關(guān)鍵字修飾num。下面通過一個案例演示const修飾參數(shù)的使用,具體如例1所示。

例1 const.c

    #define _CRT_SECURE_NO_WARNINGS        //關(guān)閉安全檢查
    #include <stdio.h> 
    void even(const int num )            //使用const修飾num
    { 
        if (num % 2 == 0) 
            printf("%d是偶數(shù)!",num); 
        else
            printf("%d是奇數(shù)!",num); 
    } 
    int main() 
    { 
       int n; 
        printf("請輸入一個整數(shù):"); 
        scanf("%d", &n); 
        even(n); 
        return 0; 
    }

例1運行結(jié)果如圖1所示。


圖1 例1運行結(jié)果

在在例1中,第3~9行代碼定義了even()函數(shù),用于判斷傳入的數(shù)據(jù)是奇數(shù)還是偶數(shù);第12~14行代碼定義整型變量n,并調(diào)用scanf()函數(shù)從鍵盤讀取數(shù)據(jù)賦值給變量n;第15行代碼調(diào)用even()函數(shù),將n作為參數(shù)傳入函數(shù)。由圖1可知,當(dāng)輸入11時,even()函數(shù)判斷11是奇數(shù)。

在even()函數(shù)中,參數(shù)num被const關(guān)鍵字修飾,則num在even()函數(shù)內(nèi)部不能被更改,否則編譯器會報錯。如果在even()函數(shù)中修改num的值,示例代碼如下:

void func(const int num )            //使用const修飾num
{
    num += 10;                        //修改num的值
    if (num % 2 == 0)
        printf("%d是偶數(shù)!",num);
    else
        printf("%d是奇數(shù)!",num);
}

再次在main()函數(shù)中調(diào)用even()函數(shù),編譯器會報錯,如圖2所示。

編譯報錯

圖2 編譯器報錯

由圖2可知,num被const關(guān)鍵字修飾,是不可更改的。但是const修飾的變量,雖然無法通過變量本身修改其值,卻可以通過指針進(jìn)行修改,定義一個指向num的指針,通過指針可以修改num的值,示例代碼如下:

int* p = &num;   //定義指向num的指針
*p += 10;         //通過指針改變num的值




猜你喜歡:

var、let、const聲明變量的區(qū)別

let關(guān)鍵字聲明變量有哪些好處?

Java中super關(guān)鍵字怎樣使用?

Java中有多少個關(guān)鍵字?使用關(guān)鍵字應(yīng)當(dāng)注意什么

傳智教育Java高級軟件工程師培訓(xùn)課程

0 分享到:
和我們在線交談!