【不是惡夢的開始,而是再度的精進。】
這是我在練習指標呼叫函數的時候所發生問題,看一下簡單的程式碼
#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);
找到了這個問題的解決方法後,我又試著丟一個常數數值當引數來編譯,結果還是出現同樣的錯誤訊息,所以在引數該給指標的地方卻給了變數或常數,都得到同樣的錯誤訊息
.
全站熱搜
留言列表