2014-05-23 65 views
-1

有人可以演示如何使用一個函數傳遞指針,該函數將兩個變量的兩個參數作爲輸入?如何通過函數中帶有兩個參數的指針傳遞?

#include <iostream> 
using namespace std; 
int passPoints(int *x, int *y) 
{ 
    int y = *x * *y; 
    return(y); 
} 
int *X, *Y; 
int main() 
{ 
    cout<<"enter two values: "; 
    cin>>*X; 
    cin>>*Y; 
    cout<<"RESULT = "<<passPoints(X,Y); 
    return 0; 
} 

有麻煩了。

+3

X和Y是空指針。試圖輸入他們指向的是一個壞主意。 – chris

+0

有什麼麻煩?至少你需要告訴我們你遇到的麻煩,否則沒有人知道你的問題。 –

+3

您需要將局部變量「int y」更改爲「int z」,或者將當前變量名稱與參數「int * y」衝突。 – Keith

回答

3

像這樣:

int X, Y; 
int main() 
{ 
    cout<<"enter two values: "; 
    cin>>X; 
    cin>>Y; 
    cout<<"RESULT = "<<passPoints(&X,&Y); 
    return 0; 
} 
1

在你的代碼(如果它不是,當你提取的問題,一個錯字)是,INT * X和Y是空指針,它們指向的位置的最大問題在您無法更新。你需要確保這些指針指向有效的存儲位置,或者通過:

int x, y; 
int* xPtr = &x; 
int* yPtr = &y; 
passPoints(xPtr, yPtr); 

或者乾脆

int x, y; 
passPoints(&x, &y); 

現在passPoints()收到的指針是有效指針

+0

它們具有靜態存儲時間。它們是空指針,而不是未初始化的。不過,同樣的後果。 – chris

+0

@chris好抓。我總是忘記變量在什麼情況下保證被初始化,什麼時候沒有。因此,我總是強迫自己把所有事情都處理爲未初始化,並明確地進行適當的初始化,我相信這也是一種良好的做法。) –

+0

的確,我花費了太多的時間學習複雜性,所以我傾向於發現自己依賴於它們。 – chris