更新時間: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的指針 *p += 10; //通過指針改變num的值