c++中的常量符號const限定符相信大家都比較熟悉它對於基本型別變數的使用方法了
無非有最常用的那種:
const type name = value;
在宣告的時候進行初始化。
這個放下不表,看下面:
const * int a = ...;
int * const a = ...;
int const * a = ...;
這三種const限定符指標有什麼區別呢?
看下面這段程式
#include
int main(void)
using namespace std;
int b = 12;
int c = 14;
const int * a = &b; //位址可變,指向的記憶體塊的內容不能改變
cout << *a << endl;
a = &c;
cout << *a << endl;
int * const v = &b; //內容可變,位址不可變
cout << *v << endl;
*v = 14;
cout << *v << endl;
b = 12;
int const * d = &b; //與const int *相同
cout << *d << endl;
d = &c;
cout << *d << endl;
return 0;
執行結果為:
程式顯示的很明白了,const int * a 和 int const * a 限定的是*a,即限定的是指標指向的記憶體塊的內容,在它指向此變數的過程中,不能通過指標a對該記憶體塊的內容進行更改(可以試一下: *a = 15; 編譯無法通過)。int * const a 限定的是指標變數a,說明指標變數的值是無法改變的,即指向的位址無法改變,但是指向的位址的內容卻可以改變。
以上是個人見解,希望各位大牛評價指正
C const限定符(一)
有時候我們希望定義這樣一種變數,它的值不能被改變,比如需要設定乙個快取區大小 const int buffsize 512 這樣就通過使用const限定符將這個大小設定為了常量,之後,任何為buffsize賦值的操作都將引發錯誤 buffsize 1024 報錯,試圖向const物件寫值const物...
關於C const限定符與define
const限定符修飾的常量無法修改,且在定義的時候必須同時初始化,否則error xcode平台 相比define,const指定的常量有型別,而define只是簡單的字元替換。const修飾的常量只能由const指標來指向,不能用乙個普通的指標指向乙個const修飾的常量 const int a ...
指標和const限定符
const int p 1,表示p指向乙個整型變數,並且該變數為const的。2,可以更改p的值,不可以更改它所指向物件的值。3,它可以指向非const型別的int變數 int const p 1,表示p指向乙個整型變數,該變數為非const的 2,不可以更改p的值,一旦初始化不可更改,單可以更改它...