C 陣列大小
獲取陣列大小或長度
要獲取陣列的大小,可以使用 sizeof
運算子
為什麼結果顯示 20
而不是 5
,儘管陣列包含 5 個元素?
- 這是因為 sizeof
運算子返回的是型別的大小(以 **位元組** 為單位)。
您從 資料型別章節 中瞭解到,int
型別通常是 4 個位元組,所以從上面的例子中,4 x 5(*4 位元組 x 5 個元素*)= **20 位元組**。
瞭解陣列的記憶體大小對於處理需要良好記憶體管理的大型程式非常有益。
但是,如果您只想知道陣列有多少個元素,可以使用以下公式(用陣列的大小除以陣列第一個元素的大小):
示例
int myNumbers[] = {10, 25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
printf("%d", length); // 列印 5
自己動手試一試 »
改進迴圈
在上一個章節的 陣列迴圈部分,我們在迴圈條件中寫死了陣列的大小(i < 4
)。這並不理想,因為它只適用於指定大小的陣列。
但是,透過使用上面示例中的 sizeof
公式,我們現在可以建立適用於任何大小陣列的迴圈,這樣更具可持續性。
不必編寫
示例
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
printf("%d\n", myNumbers[i]);
}
自己動手試一試 »
最好這樣寫:
示例
int myNumbers[] = {25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
int i;
for (i = 0; i < length; i++) {
printf("%d\n", myNumbers[i]);
}
自己動手試一試 »