分類
C++ 程式語言 飛翔領航

C++一維陣列尺寸查詢

定義一個function,輸入array(不限型態),回傳array的項目數

解決方法

如果用sizeof()會回傳byte數,每種型態也會有固定的byte數,所以拿整個陣列的長度除以每項的長度就是所求

int A[5]; //宣告一個項目數為5的整數陣列

sizeof(A); //回傳20
sizeof(int); //回傳4
sizeof(A)/sizeof(int); //回傳5(即所求)

如果今天不是int呢?

因為同一個陣列內容型態相同,每項占用的byte會一樣,所以最快得出陣列每一項所占用的byte數就是取第0項的尺寸

int A[5]; //int占4 byte
char B[5]; //char占1 byte
double C[5]; //double占8 byte

sizeof(A[0]); //回傳4
sizeof(B[0]); //回傳1
sizeof(C[0]); //回傳8

結論

#define len(x) sizeof(x)/sizeof(x[0])

以前寫專案寫習慣Python跟JS,陣列用len(array)或array.length()就可以了

接觸競程後,碰到了中階一點的C++,多了記憶體的概念。相似函式sizeof(array)輸出的會是array用到了幾個byte,我們需要的是幾個項目而不是幾個byte,所以就得除掉每個項目的byte才對。

說說你有什麼想法!

使用 WordPress.com 設計專業網站
立即開始使用