const修飾符與指標:
const與指標在一起使用,情況比較復雜,可簡單歸納為三種:指向常量的指標、常指標和指向常量的常指標,
(1) 指向常量的指標
是一個指向常量的指標變數,例如:
const int a=1,b=2;
const int *p =&a;//宣告一個名為p的指標變數
*p=2;//錯誤,不容許改變已指向的常量
p =&b;//正確,可以改變指標的指向
codeblock編譯報錯:
![]()
(2) 常指標
把指標本身宣告為常量,例如:
int a=1,b=2;
int *const p =&a;//宣告一個名為p的指標常量
*p=2;//正確,所指的資料可以改變
p =&b;//錯誤,不容許改變指標指向
codeblock編譯報錯:
![]()
(3) 指向常量的常指標
指標本身與它所指向的資料值均不能改變,例如:
const int a=1,b=2;
int *const p =&a;//宣告一個名為p的指標常量
*p=2;//錯誤,不容許改變已指向的常量
p =&b;//錯誤,不容許改變指標指向
codeblock編譯報錯:
![]()
const修飾符與參考:
C++在繼承了C語言指標的同時,引入了參考,指標存盤的是地址,是一種底層的機制,參考則是一種較高層的機制,它在語言概念上是另一變數的“別名”,把地址這一概念隱藏起來了
int a=1;
int *p=&a;
int &r=a;
printf("a的地址%x %x\n",p,&r);
printf("指標變數p的地址:%x\n",&p);
//參考無法被取地址 &(&r)
運行結果:

(1)常參考
區別于常指標;類似于指向常量的指標,又不完全類似
常參考參考的物件(基本資料型別)不能被更新
一個常參考,無論系結到一個普通的物件(變數)還是常物件(常量),通過該參考訪問該物件時,都只能把該物件當做常物件(常量)
const int a=1;
int b=2;
const int &r =a;//宣告一個名為的&r的參考
const int &r2 =b;//宣告一個名為的&r2的參考
r=2;//錯誤,不容許改變常參考參考物件的值
r2 =1;//錯誤,不容許改變常參考參考物件的值
![]()
(2)只有常參考,而沒有參考常量
不能宣告參考本身為常量
參考只能在初始化時指定它所參考的物件,其后不能再更改,這使得參考本身(而非被參考的物件)已經具有常量性質了 //ps.應該是可以認為參考本身就是常量
const int a=1;
const int &r=a;//常量的參考(常參考)
int &const r=a;//錯誤,沒有參考常量
![]()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/286650.html
標籤:區塊鏈
上一篇:DeFi簡介
下一篇:Golang 依賴注入
