const,constexpr與指標,常量表示式

2021-07-25 21:17:26 字數 657 閱讀 2168

參考自c++ primer

引自c++ primer中的一句話:

c++11新標準規定,允許將變數宣告為constexpr型別以便由編譯器來驗證變數的值是否是乙個常量表示式。宣告為constexpr的變數一定是乙個常量,而且必須用常量表示式初始化。

常量表示式:指值不會改變並且在編譯過程就能得到計算結果的表示式

const int max_files = 20; //max_files是乙個常量表示式

const int limit = max_files + 1; //limit是乙個常量表示式

int staff_size = 27; //staff_size不是乙個常量表示式

const int sz = get_size(); //sz不是乙個常量表示式

更詳細的內容請參考c++ primer 5

int i = 10;

const int k = 12;

const int *p1 = &k;//p1表示指向整形常量的指標

int *const p2 = &i;//p2是乙個常量指標

constexpr int *p3 = &i;//與p2一樣,p3表示乙個常量指標

constexpr cosnt int p4 = &k;//p4是常量指標,指向整形常量

常量表示式 const constexpr

一 常量表示式 1 概念 1 指值不會改變,在編譯過程中就能得到計算結果的表示式 2 編譯器會在編譯階段將常量替換為對應的值 2 判別 1 字面值屬於常量表示式 2 用常量表示式初始化的const物件也是常量表示式 3 是不是常量表示式由資料型別與初始值決定 const int max files ...

SQL與NoSQL MySQL與NoSQL的融合

寫這一篇內容的原因是mysql5.6.2突然推出了memcached的功能。nosql to innodb with memcached的出現,可以看出nosql對關聯式資料庫的確產生了巨大的影響,個人覺得這是乙個非常大的進步,可以讓開發人員更加方便的使用nosql和關聯式資料庫。nosql一般被認...

指標與陣列 a與 a區別

假設宣告了乙個陣列a,則 a表示陣列a的首位址,a與 a 0 表示陣列a首元素的首位址,那麼 a 1與a 1有哪些區別呢?通過下面的實驗來說明。int i 0 int a 5 int p int a 1 for i 0 i 5 i printf a 0x p,a 0x p,a 1 0x p n a,...