除了c ++中的数组,默认情况下按值传递值?

问题描述 投票:0回答:2

c ++中的所有内容,包括STL容器,都通过value传递。但是Array是例外,它由指针传递。对吧?

为什么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 ++中的所有内容,包括STL容器,都通过value传递。但是Array是例外,它由指针传递。对?为什么c ++中的数组[例如:int a [5]]由指针传递...

c++ stl pass-by-reference
2个回答
0
投票

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


0
投票

默认情况下,all

© www.soinside.com 2019 - 2024. All rights reserved.