double x[10];
for (int i = 0; x[i] != '\0'; i++) { ... } // 錯誤:'\0' 是字符字面量 (int 值 0),double 比較語義錯誤
int n = 10; // 或 sizeof(x)/sizeof(x[0]) 僅在定義作用域有效
for (int i = 0; i < n; i++) { ... }
// 約定 -1.0 為結束標記 (業務數據不含負數)
double x[] = {1.1, 2.2, 3.3, -1.0};
for (int i = 0; x[i] != -1.0; i++) { ... }
typedef struct {
double *data;
size_t len;
} DoubleArray;
DoubleArray arr = {malloc(100*sizeof(double)), 100};
for (size_t i = 0; i < arr.len; i++) { ... }
現代編譯器 (GCC `-Wall`, Clang, MSVC `/W4`) 會警告:`comparison between double and character constant`,**務必開啟警告並視為錯誤處理**。
理解「數組退化為指針丟失長度」是 C/C++ 內存安全的核心課題。