首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 函數指標傳參錯誤:question1(&p) 應為 question1(p)

     編輯:程式設計疑難解答

錯誤程式碼

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); // 直接取址傳遞

指標層級對照

補充:參數為 char option 初始化錯誤

char option = 'a' || 'b' || 'c'; // 錯誤:邏輯運算結果為 1 (true)

正確:char option = 0; 或不初始化,`cin >> option;` 直接讀入。

總結

已有指標變數 `p` 時直接傳 `p`,不要再加 `&`。指標層級每多一個 `&` 就多一級間接,型別不匹配會導致編譯/執行錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
運算式型別含義
pointint整數值
&pointint*指向 point 的指標
pint*指標變數 (已存放 &point)
&pint**指向指標 p 的指標 (雙重指標)