利用constexpr宣告陣列的大小

2021-10-08 23:18:32 字數 535 閱讀 1469

摘自:這裡

你想要乙個計算陣列size的函式,size是10的倍數。如果不用constexpr,你需要建立乙個巨集或者使用模板,因為你不能用函式的返回值去宣告陣列的大小。但是用constexpr,你就可以呼叫乙個constexpr函式去宣告乙個陣列。

constexpr

int getdefaultarraysize (

int multiplier)

int my_array[

getdefaultarraysize(3

)];int a =4;

//非常量表示式

getdefaultarraysize

(a);

//ok

constexpr修飾的函式,簡單的來說,如果其傳入的引數可以在編譯時期計算出來,那麼這個函式就會產生編譯時期的值。但是,傳入的引數如果不能在編譯時期計算出來,那麼constexpr修飾的函式就和普通函式一樣了。不過,我們不必因此而寫兩個版本,所以如果函式體適用於constexpr函式的條件,可以盡量加上constexpr。

陣列 陣列宣告建立

陣列是相同型別資料的有序集合.陣列描述的是相同型別的若干個資料,按照一定的先後次序排列組合而成。其中,每乙個資料稱作乙個陣列元素,每個陣列元素可以通過乙個下標來訪問它們.首先必須宣告陣列變數,才能在程式中使用陣列。下面是宣告陣列變數的語法 datatype arrayrefvar 首選的方法 或da...

陣列 陣列宣告建立

陣列是相同型別資料的有序集合.陣列描述的是相同型別的若干個資料,按照一定的先後次序排列組合而成。其中,每乙個資料稱作乙個陣列元素,每個陣列元素可以通過乙個下標來訪問它們.首先必須宣告陣列變數,才能在程式中使用陣列。下面是宣告陣列變數的語法 datatype arrayrefvar 首選的方法 或da...

C 陣列宣告

c 陣列的五種宣告方式 一 宣告乙個未經初始化的陣列引用,以後可以把這引用初使化為乙個陣列例項 int intarray intarray new int 10 二 宣告乙個陣列引用並對他進行初使化,該陣列引用被立即賦予乙個陣列的新例項。int intarray new int 10 三 宣告乙個陣...