0 引言
在使用数组和vector作为函数的参数进行参数传递并希望得到值的回传时,由于不知道怎么写数组函数形参的引用形式,一直采用vector的引用形式。但是,刚刚测试了一下,发现数组作为参数本身就是指针,根本不需要采用引用形式把值回传啊,把测试结果写下来。
1 关于数组作为函数参数的值传递问题——数组和容器的对比
数组直接作为形参进行传递,容器(以vector为例)以引用形式作为形参
1. 函数代码
void arrayTest(double myarray[3]){ for(int i=0; i<3; ++i){ myarray[i] = i+1; } } void vectorTest(vector<int>& myVector){ for(int i=0; i<3; ++i){ myVector[i] = i+1; } }
2. 测试代码
void arrayAndVectorTest(){ double myarray[3] = {0,0,0}; arrayTest(myarray); cout << "array test" <<endl; for(int i=0; i<3;i++){ cout << "第" << i << "个数 = " << myarray[i] << endl; } vector<int> myVector{0,0,0}; vectorTest(myVector); cout << "vector test" <<endl; for(auto it = myVector.begin(); it != myVector.end(); ++ it) cout << "第" << it -myVector.begin() + 1 << "个数 = " << *it << endl; }
3. 测试结果如下
两种方法均实现了值的回传.
4. 数组直接作为形参进行传递,容器(以vector为例)以引用形式作为形参
void vectorTest(vector<int> myVector){ for(int i=0; i<3; ++i){ myVector[i] = i+1; } }
此时,数组实现了值回传,但是容器没有实现值回传。