返回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;
}
答
传递参数,因为你有“通过价值”传递。更改函数中的值对保存传递给函数的值的原始变量没有影响。
代替传递参考。引用是原始变量,所以更改函数中的参数会更改原始变量。
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)来提高你的帖子的质量。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –
谷歌'C++路过reference.'它是第一个教训之一。 – DeiDei
您必须将值作为指针传递。 CoordTransform中的xValNew和yValNew是仅在该函数范围内已知的变量。看看这个链接是否有帮助:https://www.tutorialspoint.com/cplusplus/cpp_passing_pointers_to_functions.htm –
'return void();'是不必要的。对于'void'函数,只是'return;'没有参数,或者你可以省略'return;'并且结束。 –