返回void函数

问题描述:

这里我很新。希望我能够贡献一段时间。我很难分配这个新的值。每当我运行代码时,他们只会得到零。返回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;'并且结束。 –

传递参数,因为你有“通过价值”传递。更改函数中的值对保存传递给函数的值的原始变量没有影响。

代替传递参考。引用是原始变量,所以更改函数中的参数会更改原始变量。

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

此外,void返回值意味着你不直接从函数返回任何东西。不要使用return语句。

你是什么意思如下

#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; 
} 

第三和功能的第四个参数必须是引用类型。

你可以只改变功能参数:

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

虽然这段代码可能会解决这个问题,包括一个解释[真的有帮助](// meta.stackexchange.com/q/114762)来提高你的帖子的质量。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –