close


【不是惡夢的開始,而是再度的精進。】

這是我在練習指標呼叫函數的時候所發生問題,看一下簡單的程式碼    


#include <iostream>

using namespace std;


int add(int* initial);

int main(int argc, char** argv)
{
    int ai = 9;
    int resulti = add(ai);    // 問題出在這裡
    cout << "\n\n呼叫完add()函數後 ai =   " << ai;
    cout << "\n\n回傳給resulti的值是  " << resulti;

    return 0;
}

int add(int* p_iai)
{
    *p_iai += 3;
    cout << "\n\n在add函數中 *p_iai =  " << *p_iai;

    return *p_iai;
}


問題出在宣告add()函數時,引數是整數變數的指標,呼叫add()時卻直接丟整數變數當引數,因此只要在引數ai的地方加一個取址運算子&就可以了

int resulti = add(&ai); 


找到了這個問題的解決方法後,我又試著丟一個常數數值當引數來編譯,結果還是出現同樣的錯誤訊息,所以在引數該給指標的地方卻給了變數或常數,都得到同樣的錯誤訊息


 

 

 

 

.

arrow
arrow
    全站熱搜

    伊蒙‧普羅客 發表在 痞客邦 留言(0) 人氣()