c和c++的區別三【const的修飾】
在c語言中
1)const修飾的變數稱為常變數,在定義時可以進行初始化,也可以不初始化;但是如果在定義時未初始化的情況下,以後都不能在修改了,所在一般在定義時都進行了初始化;
例如:
const int num = 10;
const int b;
b = 20;//error
2)由於這個常變數本質還是乙個變數,所以不可用於陣列的下標;
例如:
const int num = 10;
//int array[num] = ;error
3)在本檔案引用其他檔案中的const修飾的量時,跟普通變數一樣,只要在本檔案中加extern宣告一下即可;
4)由於這個常變數本質還是乙個變數,我們可以定義指標通過解引用來改變變數的值;
例如:
int main()
上述****:
所以說常變數是一種特殊的變數,它的編譯方式和普通變數的編譯方式一摸一樣,只是常變數不能作為左值而已
在c++中
1)const修飾的變數稱為常量,在定義時必須進行初始化,因為在c++的編譯規則中,與編譯階段,所有使用常量所在的地方都被替換成它的初始值;
例如:
const int a = 10;
//a = 12;//error;在c++中const一旦初始化後則不能改變
const int s;//在c++中const是常量必須初始化
2)由於本質是乙個常量,所以可用於陣列的下標;
例如:
const int a = 10;
int arr[a];//合法
3)在本檔案引用其他檔案中的const修飾的量時,它的作用域為local,本檔案所有,所以需要在const常量定義處外加extern,因為在編譯時它會直接在檔案中展開;
例如:
檔案中
const int baby = 10;
檔案中
extern const int baby;
int main()
結果:
1>c和c++的區別.obj : error lnk2001: 無法解析的外部符號 "int const baby" (?baby@@3hb)
1>d:\vs練習**\c++\c++複習\debug\c++複習.exe : fatal error lnk1120: 1 個無法解析的外部命令
********** 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 **********
::若想使得作用域變為global,則在定義處前加extern,則編譯的時候當作global符號進行處理,則其他檔案中可用;
4)由於本質是乙個常量,我們不可以定義指標通過解引用來改變變數的值;
const int a = 10;
int *p = (int *)&a;
*p = 20;//error
5)引用乙個編譯階段不明確的值的時候是常變數 常量-------》常變數;
例如:
int main()
{ int a = 10;
const int b = a;
int *p = (int *)&b;
*p = 20;
cout結果:
所以說可以被修改,所以這塊是常變數;(而不是常量了);
C語言const的修飾
1.修飾變數 用const宣告乙個變數,其值是不可改變的,例如 const int dat dat 1 這是錯誤的,dat的值不可改變 對const變數只能在初始化的時候賦值,並且一旦賦值後其值不可改變,正確初始化const變數如下 const int dat 1 2.修飾指標 對於用const宣告...
C和C 中const的區別
原文出自 一.c語言中的const const是c語言中保留的乙個關鍵字,它用來限定乙個變數是唯讀的,即不可變的。程式中使用const可以在一定程度上提高程式的健壯性,但是程式中使用過多的const,可能在對 的閱讀時增加一定的難度。1 用const修飾一般變數 注意在c語言中,用const修飾的變...
C和C 中的const區別
合理的利用const 有以下優點 1 指標做函式引數,可以有效提高 的可讀性,減少bug 2 清楚分清引數的輸入和輸出特性。而c語言中的const,並不是真正的const,可以通過指標,間接修改const變數的值 例如 const int a 10 int p null p int a p 20 間...