-1

我刚刚开始使用 C++,并以 C 为基础。通过引用了解了 Call 之后,我需要知道,如果在网上找到以下函数:

int insertSorted(int arr[], int n, int key, int capacity)
{
    if (n >= capacity)
        return n;

    arr[n] = key;
    return (n+1);
}

,用于插入未排序的数组,主函数中的数组会受到影响/更改吗?由于arr[]函数中的参数不是引用变量,那么这个被调用函数的任何变化如何反映在调用函数中?如果有的话,这是正确的代码吗?我的问题基于这样一个事实,即按值调用会创建复制变量并更改它们,而按引用调用会更改实际变量本身。如果这个问题有点愚蠢,我很抱歉。澄清这个概念的任何帮助都会很棒。

谢谢。

4

1 回答 1

1

arr实际上是指向数组的指针。因此,在您的情况下,它就像一个引用,并且函数将数组arr指向。

如果你想用 C++ 的方式做更多的事情,你应该使用 astd::vector<int>而不是 aint[]作为你的数组。std::vector具有 C 样式数组的所有功能,但负责内存管理和元素的实际数量。

如果是 astd::vector你真的必须传递一个引用 ( std::vector &),否则该函数将收到整个数组的副本。

于 2017-07-23T19:47:32.680 回答