26 函数形参值回传问题——C++解决多个return的一般方法

0 引言

在使用数组和vector作为函数的参数进行参数传递并希望得到值的回传时,由于不知道怎么写数组函数形参的引用形式,一直采用vector的引用形式。但是,刚刚测试了一下,发现数组作为参数本身就是指针,根本不需要采用引用形式把值回传啊,把测试结果写下来。

1 关于数组作为函数参数的值传递问题——数组和容器的对比

  数组直接作为形参进行传递,容器(以vector为例)以引用形式作为形参

  1. 函数代码

1void arrayTest(double myarray[3]){ 2 for(int i=0; i<3; ++i){ 3 myarray[i] = i+1; 4 } 5} 6 7void vectorTest(vector<int>& myVector){ 8 for(int i=0; i<3; ++i){ 9 myVector[i] = i+1; 10 } 11}

  2. 测试代码

1void arrayAndVectorTest(){ 2 double myarray[3] = {0,0,0}; 3 arrayTest(myarray); 4 cout << "array test" <<endl; 5 for(int i=0; i<3;i++){ 6 cout << "第" << i << "个数 = " << myarray[i] << endl; 7 } 8 vector<int> myVector{0,0,0}; 9 vectorTest(myVector); 10 cout << "vector test" <<endl; 11 for(auto it = myVector.begin(); it != myVector.end(); ++ it) 12 cout << "第" << it -myVector.begin() + 1 << "个数 = " << *it << endl; 13}

  3. 测试结果如下

   

  两种方法均实现了值的回传.

  4. 数组直接作为形参进行传递,容器(以vector为例)以引用形式作为形参  

1void vectorTest(vector<int> myVector){ 2 for(int i=0; i<3; ++i){ 3 myVector[i] = i+1; 4 } 5}

   

  此时,数组实现了值回传,但是容器没有实现值回传。

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

ROS回调函数传参

ROS编程过程中遇到不少需要给回调函数传递多个参数的情况,下面总结一下,传参的方法:一、回调函数仅含单个参数voidchatterCallback(conststd_msgs::String::ConstPtr&msg){ROS_INFO("Iheard:%s",msg

JS的一些优雅写法

JS的一些优雅写法reduce1、可以使用reduce方法来实现对象数组中根据某一key值求和例如,假设有以下对象数组:constarr其中,reduce方法的第一个参数是一个回调函数,它接收两个参数:累加器(acc)和当前元素(cur)。回调函数的返回值

什么是高阶函数?

原文链接:什么是高阶函数?有两种情况都可以被定义为高阶函数,第一种是把函数作为参数传递给另外一个函数,第二种是把函数作为另一个函数的返回结果。就像我们平时调用函数,一般都是传递值类型或者对象和数组等参数,或者是函数返回结果是值类型或者是对象和数组,高阶函数

js 的 forEach,map,filter,some,every,find(es6),reduce详解

forEach()定义和用法forEach()方法用于调用数组的每个元素,并将元素传递给回调函数注意:forEach()对于空数组是不会执行回调函数的。语法array.forEach(function(currentValue,index,arr),thisValue)参数function(currentValue,index,a

C++中二维数组作为函数参数

在平时,我们经常会遇到将整个数组作为函数参数的情况,一维数组的情况,就是用数组名当形参和实参,传递的是数组的首地址。二维数组我们用的也很多,但是总是有各种问题,今天我总结一下有个很重要的一点,字符串“China”在编译器眼里就是一个地址!操作字符串是通过它在内存中的存储单元的首地址进行的,这是字符串的终极本质如果"China",存储在内存中的0