錯誤程式碼
void question1(int *p);
int main() {
int point = 0;
int *p = &point;
question1(&p); // 錯誤:傳遞 int** 給期望 int* 的參數
}
編譯錯誤
error: cannot convert 'int**' to 'int*' for argument 1 to 'void question1(int*)'
修正
question1(p); // 直接傳遞指標變數 p (型別 int*)
// 或
question1(&point); // 直接取址傳遞
指標層級對照
| 運算式 | 型別 | 含義 |
| point | int | 整數值 |
| &point | int* | 指向 point 的指標 |
| p | int* | 指標變數 (已存放 &point) |
| &p | int** | 指向指標 p 的指標 (雙重指標) |
補充:參數為 char option 初始化錯誤
char option = 'a' || 'b' || 'c'; // 錯誤:邏輯運算結果為 1 (true)
正確:char option = 0; 或不初始化,`cin >> option;` 直接讀入。
總結
已有指標變數 `p` 時直接傳 `p`,不要再加 `&`。指標層級每多一個 `&` 就多一級間接,型別不匹配會導致編譯/執行錯誤。
- 上一篇文章: Java Web 登入日誌 IP 比對:資料庫記錄優於日誌解析
- 下一篇文章: MyEclipse 專案消失:工作空間與 .metadata 損壞修復
Copyright ©
程式碼之家 All Rights Reserved