| 概念 | 含義 | 計算方式 |
|---|---|---|
| 陣列大小 | 佔用記憶體位元組數 | sizeof(array) |
| 元素個數 | 陣列中元素數量 | sizeof(array)/sizeof(array[0]) |
#include <stdio.h>
#include <string.h>
#define SIZE 7
typedef struct { int age; char *name; char flag; } Person;
int main() {
int a1[SIZE];
char a2[SIZE];
Person a3[SIZE];
printf("int 陣列: 大小=%zu, 元素=%zu\n", sizeof(a1), sizeof(a1)/sizeof(int));
printf("char 陣列: 大小=%zu, 元素=%zu, strlen=%zu\n", sizeof(a2), sizeof(a2)/sizeof(char), strlen(a2));
printf("Person 陣列: 大小=%zu, 元素=%zu\n", sizeof(a3), sizeof(a3)/sizeof(Person));
return 0;
}
int 陣列: 大小=28, 元素=7
char 陣列: 大小=7, 元素=7, strlen=7
Person 陣列: 大小=84, 元素=7
直接用 sizeof(array) 作為迴圈次數,導致越界或邏輯錯誤。務必除以單個元素大小。
char 陣列若以 '\0' 結尾,strlen 返回有效字符長度,可能小於陣列大小。