void max(int *x, int *y) {
int *z; // 錯誤:宣告為指標
if (*y > *x) {
*z = *x; // 解參考未初始化指標 -> 未定義行為
*x = *y;
*y = *z;
}
}
int *z 宣告了一個指標變數,但未指向有效記憶體位址。*z = *x 時,嘗試寫入隨機位址,導致程式崩潰或資料損毀。臨時變數應宣告為整數型別,而非指標。
void max(int *x, int *y) {
int z; // 正確:宣告整數變數
if (*y > *x) {
z = *x;
*x = *y;
*y = z;
}
}
max 易誤解為「求最大值」,實際功能是「將兩值按大小排序 (大者前置)」,建議改名如 sortDesc 或 swapIfGreater。max 可實現簡單的四數排序(冒泡思想),但邊界情況需注意。