C const 限定符 指標的使用方法

2021-05-05 13:06:15 字數 982 閱讀 8546

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的值,一旦初始化不可更改,單可以更改它...