按参考或按价值打电话?

时间:2017-07-23 19:34:31

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

我刚开始使用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[]参数不是引用变量,所以这个被调用函数的任何变化如何反映在调用函数中?这是正确的代码,如果有的话?我的问题基于以下事实:按值调用,创建复制变量并更改它们,而通过引用调用会更改实际变量本身。如果这个问题有点傻,我很抱歉。 任何帮助清理这个概念都会很棒。

感谢。

1 个答案:

答案 0 :(得分:1)

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

如果您想更多地采用C ++方式,那么您应该为数组使用std::vector<int>而不是int[]std::vector具有C风格数组的所有功能,但负责内存管理和元素的实际数量。

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