我刚开始使用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[]
参数不是引用变量,所以这个被调用函数的任何变化如何反映在调用函数中?这是正确的代码,如果有的话?我的问题基于以下事实:按值调用,创建复制变量并更改它们,而通过引用调用会更改实际变量本身。如果这个问题有点傻,我很抱歉。
任何帮助清理这个概念都会很棒。
感谢。
答案 0 :(得分:1)
arr
实际上是指向数组的指针。因此,在您的情况下,它就像一个引用,该函数将数组arr
更改为。
如果您想更多地采用C ++方式,那么您应该为数组使用std::vector<int>
而不是int[]
。 std::vector
具有C风格数组的所有功能,但负责内存管理和元素的实际数量。
如果是std::vector
,你真的必须传递一个引用(std::vector &
),否则该函数将收到整个数组的副本。