2016-11-10 165 views
-1

這裏我很新。希望我能夠貢獻一段時間。我很難分配這個新的值。每當我運行代碼時,他們只會得到零。返回void函數

#include <iostream> 
using namespace std; 


void CoordTransform(int xVal,int yVal,int xValNew, int yValNew) { 


    xValNew = (xVal + 1) * 2; 
    yValNew = (yVal + 1) * 2; 

return void(); 
} 


int main() { 
    int xValNew = 0; 
    int yValNew = 0; 

    CoordTransform(3, 4, xValNew, yValNew); 
    cout << "(3, 4) becomes " << "(" << xValNew << ", " << yValNew << ")" << endl; 

    return 0; 
} 
+0

谷歌'C++路過reference.'它是第一個教訓之一。 – DeiDei

+0

您必須將值作爲指針傳遞。 CoordTransform中的xValNew和yValNew是僅在該函數範圍內已知的變量。看看這個鏈接是否有幫助:https://www.tutorialspoint.com/cplusplus/cpp_passing_pointers_to_functions.htm –

+0

'return void();'是不必要的。對於'void'函數,只是'return;'沒有參數,或者你可以省略'return;'並且結束。 –

回答

3

傳遞參數,因爲你有「通過價值」傳遞。更改函數中的值對保存傳遞給函數的值的原始變量沒有影響。

代替傳遞參考。引用是原始變量,所以更改函數中的參數會更改原始變量。

void CoordTransform(int xVal, int yVal, int& xValNew, int& yValNew) { 
    xValNew = (xVal + 1) * 2; 
    yValNew = (yVal + 1) * 2; 
} 

此外,void返回值意味着你不直接從函數返回任何東西。不要使用return語句。

0

你是什麼意思如下

#include <iostream> 
using namespace std; 

void CoordTransform(int xVal, int yVal, int &xValNew, int &yValNew)  
{ 
    xValNew = (xVal + 1) * 2; 
    yValNew = (yVal + 1) * 2; 
} 

int main() 
{ 
    int xValNew; 
    int yValNew; 

    CoordTransform(3, 4, xValNew, yValNew); 
    cout << "(3, 4) becomes " << "(" << xValNew << ", " << yValNew << ")" << endl; 

    return 0; 
} 

第三和功能的第四個參數必須是引用類型。

-2

你可以只改變功能參數:

void CoordTransform(int xVal,int yVal,int& xValNew, int& yValNew) 
+0

雖然這段代碼可能會解決這個問題,包括一個解釋[真的有幫助](// meta.stackexchange.com/q/114762)來提高你的帖子的質量。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。 –