void assignVal(int *loopCount)
{
//lots of stuff with print statements to know where func stop executing
cout << "before assign resultCount" << endl;
*loopCount = 3; //I want the loopSize int in the main function to be equal to 3;
cout << "after assign resultCount" << endl;
return;
}
int main()
{
int loopSize;
assignVal(&loopSize);
//Doesn't get here or below
for(int i = 0; i < loopSize; i++)
{
cout << i << endl;
}
}
我试图将变量loopSize
传递给函数assignVal(int*)
内。我无法控制主要功能,这是针对hackerank的(显然这不是问题的代码,我只是显示了对我不起作用的小部分的严重修改版本。我也无法控制assignVal(int*)
函数签名。我需要接收此int *,在函数中对其进行更改,然后仅返回。我不知道为什么它不起作用,这就是我将在其他任何地方这样做的方式。 cout
“在分配结果之后”永远不会被打印,并且程序在那里停止执行。我可以确认它正在编译。
编辑:应该注意,如果我这样分配loopCount
int* arr = {3};
loopCount = arr;
该函数可以继续执行,但是由于某种原因,该函数外部的值不正确。
答案 0 :(得分:0)
它不是通过引用传递的,它是一个指针。原始指针需要仔细管理以避免出现问题。您可以像这样通过引用传递
:void assignVal(int & loopCount)
您可以在此处了解更多信息: What's the difference between passing by reference vs. passing by value?