给通过引用传递的int赋值会停止程序执行

时间:2019-04-22 01:21:53

标签: c++ reference pass-by-reference

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;

该函数可以继续执行,但是由于某种原因,该函数外部的值不正确。

1 个答案:

答案 0 :(得分:0)

它不是通过引用传递的,它是一个指针。原始指针需要仔细管理以避免出现问题。您可以像这样通过引用传递

void assignVal(int & loopCount)

您可以在此处了解更多信息: What's the difference between passing by reference vs. passing by value?