c++中除了数组以外的所有东西都默认按值传递吗?

Everything but arrays in c++ are passed by value by default?

c++ 中的所有内容,包括 STL 容器,都是按值传递的。但例外是通过指针传递的数组。对吗?

为什么 C++ 中的数组 [eg: int a[5] ] 是通过指针传递的,而向量是通过值传递的? [默认]

编辑:好的,std::array 也可以按值传递,我不知道这一点。

代码:

void fun_array(int a[])
{
    a[0]=10;
}



  void fun_vector(vector<int> v)
    {
        v[0]=10;
    }

    int main()
    {
        int a[5]={1,2,3,4,5};
        vector<int> v={1,2,3,4,5};
        fun_array(a);
        fun_vector(v);

        cout<<a[0]<<" "<<v[0];

    }

输出:10 1

如果您不另行指定,则所有内容均按值传递。 C 数组的情况并非例外,只是它们退化为指针。如果您需要在 C++ 代码中使用固定大小的数组,则更喜欢使用 std::array 而不是 C 数组。

然后决定是按值还是按引用传递。

相关说明:即使在传递容器时,您可能仍希望按值传递,而不是按引用传递,如果您要复制容器。

默认情况下 C++ 中的所有 函数参数都是按值传递的。

你的困惑来自这样一个事实,即数组的名称实际上是指向数组第一个元素的指针(例如,对于数组 int a[6]a 是指向 a[0].

除非函数参数明确地是对指针的引用,否则即使是指针参数也是按值传递的。