Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
默认情况下,C++中的所有数组都是按值传递的? C++中的所有内容,包括STL容器都是按值传递的。但例外情况是由指针传递的数组。对吧? 为什么C++中的数组[EG:int A [5 ] ]被指针传递,但是向量是按值传递的?[默认情况下]_C++_Stl_Pass By Reference - Fatal编程技术网

默认情况下,C++中的所有数组都是按值传递的? C++中的所有内容,包括STL容器都是按值传递的。但例外情况是由指针传递的数组。对吧? 为什么C++中的数组[EG:int A [5 ] ]被指针传递,但是向量是按值传递的?[默认情况下]

默认情况下,C++中的所有数组都是按值传递的? C++中的所有内容,包括STL容器都是按值传递的。但例外情况是由指针传递的数组。对吧? 为什么C++中的数组[EG:int A [5 ] ]被指针传递,但是向量是按值传递的?[默认情况下],c++,stl,pass-by-reference,C++,Stl,Pass By Reference,编辑:好的,std::数组也可以通过值传递,我不知道这一点 代码: 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

编辑:好的,std::数组也可以通过值传递,我不知道这一点

代码:

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::Adple,而不是C数组。p> 然后决定是通过值传递还是通过引用传递


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

如果不另行指定,则所有内容都按值传递。关于C数组的情况并不例外,只是它们退化为指针。如果需要C++中的固定大小的数组,则首选使用STD::Adple,而不是C数组。p> 然后决定是通过值传递还是通过引用传递

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

除非函数参数是对指针的引用,否则指针参数都是按值传递的。

< P>默认情况下,C++中的所有函数参数都是按值传递的。 您的困惑来自这样一个事实:数组的名称实际上是指向数组第一个元素的指针,例如,对于数组int a[6],a是指向a[0]的指针


除非函数参数是对指针的引用,否则指针参数也会被值传递。

数组会衰减到PoTS. C++中的数组是什么意思?你是说STD::数组?数组可以衰减到PoTest. C++中的数组是什么意思?你的意思是std::array吗?数组的名称当然不是指向其第一个元素的指针,如果尝试&a或sizeofa,可以看到,但在大多数上下文中,它会衰减为一个。引用参数是通过引用传递的。嗯。。。ReDrigo在技术上是正确的,如果你编写编译器,很少有初学者试图理解C++阵列为什么要做他们将要做的深入阅读ISO/IEC 1488年至2017年第7.2节。当您看到*1+a给出与[1]相同的结果时,或者将数组名称作为参数传递意味着参数是按值传递的指针时,说数组的名称类似于指针就更有意义了。它可以工作,让他们编写可以推理的工作代码,他们不必担心如何在编译器中实现符号表就能理解。数组的名称当然不是指向其第一个元素的指针,如果您尝试&a或sizeofa,但在大多数情况下,它都会退化为一个引用。引用参数是通过引用传递的。嗯。。。ReDrigo在技术上是正确的,如果你编写编译器,很少有初学者试图理解C++阵列为什么要做他们将要做的深入阅读ISO/IEC 1488年至2017年第7.2节。当您看到*1+a给出与[1]相同的结果时,或者将数组名称作为参数传递意味着参数是按值传递的指针时,说数组的名称类似于指针就更有意义了。它可以工作,它可以让他们编写可以推理的工作代码,并且他们不必担心如何在编译器中实现符号表来理解。