揭開 const 的神秘面紗

2021-08-18 18:07:57 字數 1255 閱讀 8379

const: 變數

int main()

int a=10;  //可讀可寫

int b;

b=a; //a的讀取許可權》b

a=20; //a的寫許可權

左值: 放在賦值符號的左邊

1.const: 定義常變數,將變數變成唯讀型的

int ca=10;  //可讀可寫

const int ca=10;  //加上const後,變成了唯讀型

ca=10;  //error 不可更改,賦值,所以不可以把10賦給a

const int ba; //error 區域性變數預設值隨機值

如果是  static int sa=10;  

sa=20; //是可以的,因為static:靜態,可以更改

2.資料型別對於const而言是透明的

const int *p1=&a;  

char const*p1=&a;

int *const p1=&a;

在程式中,資料型別對於const而言是透明的,以上是三個例子中,不管怎麼寫,整形int型或者字元char型都沒有對const造成影響,const修飾的仍然是 p1.

3.const修飾的是它的直接右邊 (直接右邊不可以做左值)

p1=&b; //ok 

*p1=200  //error

因為資料型別視為透明,const的直接右邊是 *p1並不是p1; 因為直接右邊不可以做左值,所以*p1不可以進行更改賦值為200,但是解引用後,p1卻可以儲存變數a的值.

4.const 的許可權可以同等或者縮小許可權傳遞,但是不可以放大傳遞

整體舉例

int main()

int a=10;

int b=20;    //可讀可寫

const int ca=10;

const int ba=20;   //唯讀

int *p=&a;

p=&b;   //*p=100; 

p=&ca;  //error ,*p=100 

const int *p1=&a;

p1=&ca;

*p1=100;   //error

int *const p2=&a;

int *const p3=&ca;  //error  constd都直接右邊 p3不可以更改,ca也不可以更改,所以此項錯誤

揭開信貸神秘面紗

貸款信用保險是指保險人對銀行或其他金融機構與企業之間的借貸合同進行擔保,以承保借款人信譽風險的保險。在貸款信用保險中,貸款方 即債權人 是投保人。但保單簽發後,貸款方即成為被保險人。當企業無法歸還貸款時,債權人可以從保險那裡獲得補償。貸款人在獲得保險人的補償後,必須將債權轉讓給保險人,由保險人向借款...

揭開Zookeeper神秘面紗

zookeeper是乙個開源的分布式的,為分布式應用提供協調服務的apache專案。hadoop 和hbase的重要元件。它是乙個為分布式應用 提供一致性服務 的軟體,提供的功能包括 配置維護 網域名稱服務 分布式同步 組服務 等。1 zookeeper 乙個領導者 leader 多個跟隨者 fol...

揭開MVC的神秘面紗

最近參加的高校平台專案中涉及到了 mvc。mvc,有人說是一種設計模式,也有人說是使用者介面層設計架構。那麼 mvc到底是什麼呢?今天我們一起來學習一下。mvc,即model view controller,把乙個應用的輸入 處理 輸出流程按照 model view controller 的方式進行...