按英文的字面意思,從右向左理解就比較清楚了:
const char *pointer
常量指標(底層const):pointer to const
字面意思:指向常量的指標,不能通過這個指標修改指向的內容
char *const pointer
指標常量(頂層const):const pointer
字面意思:指標本身是個常量,不能修改這個指標的指向
看一段**:
char hello[6] = "hello";
char world[6] = "
world";
const
char *p2const = hello; //
pointer to const
char *const constp = hello; //
const pointer
p2const = world; //
value of p2const is "world"
//constp = world;
//constant pointer cannot be reassigned
constp[
0] = '
y'; //
value of constp is "yello"
//p2const[0] = 'y';
//pointer to constant, cannot change the value
cout
<< p2const << '
'<< constp << endl; //
"world yello"
! 注:c++中 auto 型別推斷會忽略頂層const,保留底層const。如果設定為 auto& auto的引用時,頂層const性質保留
C C 指標常量和常量指標
常量指標 常量指標是指向常量的指標,指標指向的記憶體位址的內容是不可修改的。常量指標定義 const int p a p 告訴編譯器是常量,不能將 p作為左值進行操作。但這裡的指標p還是乙個變數,它的內容存放常量的位址,所以先宣告常量指標再初始化是允許的,指標也是允許修改的,例如 int a 0,b...
C C 指向常量的指標和常量指標
由於之前沒有系統的看過書籍,導致概念混淆,由 c primer 中得到,const修飾指標有兩種形態,分別是指向常量的指標 pointer to const 和常量指標 const pointer ps 對之前看過此部落格的同學表示抱歉 int a 1 int b 2 const int p a 等...
再學C C 之 指標常量 和 常量指標
1 指標常量,將指標的指向當成常量。即指標變數的值只能在定義的時候初始化,定義後不能修改,也就是說不能改變指標變數的指向。但是不影響所指物件的訪問特徵。其定義形式為 型別 const 指標 型別是該指標所指物件的型別,為指標型別說明符。例項1 int var1 100 int var2 200 初始...