scanf("%d", n); // ❌ 缺少 &
scanf("%d", &n); // ✅ 加上取址符
scanf 需要將讀取的值**寫入變數的記憶體地址**。n 是變數的**值**,&n 才是變數的**地址**。& 會導致 scanf 將輸入寫入錯誤記憶體位置,輕則輸入無效,重則程式崩潰 (Segmentation Fault)。| 錯誤寫法 | 正確寫法 | 說明 |
|---|---|---|
| scanf("%d", a); | scanf("%d", &a); | 基本型別必須取址 |
| scanf("%s", &str); | scanf("%s", str); | 字元陣列/指標本身即地址,不可再加 & |
| scanf("%d %d", &a, &b); | scanf("%d %d", &a, &b); | 多變數每個都要加 & |