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

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

const關鍵詞修飾參數【案例演示】

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

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

例1 const.c

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

例1運行結果如圖1所示。


圖1 例1運行結果

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

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

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

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

編譯報錯

圖2 編譯器報錯

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

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




猜你喜歡:

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

let關鍵字聲明變量有哪些好處?

Java中super關鍵字怎樣使用?

Java中有多少個關鍵字?使用關鍵字應當注意什么

傳智教育Java高級軟件工程師培訓課程

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