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

Stella981
• 阅读 377

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. 测试结果如下

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

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

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

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

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

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

点赞
收藏
评论区
推荐文章
LinMeng LinMeng
2年前
js 的 forEach,map,filter,some,every,find(es6),reduce详解
forEach()定义和用法forEach()方法用于调用数组的每个元素,并将元素传递给回调函数注意:forEach()对于空数组是不会执行回调函数的。语法array.forEach(function(currentValue,index,arr),thisValue)参数function(currentValue,index,a
刚刚好 刚刚好
6个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
LinMeng LinMeng
2年前
vue中页面间跳转传值的两种方式(query,params)
两者都可以传递参数,区别是什么?query传参配置的是path,而params传参配置的是name,在params中配置path无效query在路由配置不需要设置参数,而params必须设置query传递的参数会显示在地址栏中params传参刷新会无效,但是query会保存传递过来的值,刷新不变;query:this.$route
晴空闲云 晴空闲云
6个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
5个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Easter79 Easter79
1年前
SpringMVC 页面传递参数到controller的五种方式
一共是五种传参方式:一:直接将请求参数名作为Controller中方法的形参public Stringlogin(Stringusername,Stringpassword) :解释:括号中的参数必须与页面Form表单中的name名字相同二:使用@RequestParam绑定请求参数参数值举例:publicStri
Wesley13 Wesley13
1年前
C++中二维数组作为函数参数
在平时,我们经常会遇到将整个数组作为函数参数的情况,一维数组的情况,就是用数组名当形参和实参,传递的是数组的首地址。二维数组我们用的也很多,但是总是有各种问题,今天我总结一下有个很重要的一点,字符串“China”在编译器眼里就是一个地址!操作字符串是通过它在内存中的存储单元的首地址进行的,这是字符串的终极本质如果"China",存储在内存中的0
Stella981 Stella981
1年前
SpringBoot2 学习10 Controller接收参数的方式
地址传值@PathVariable获取路径参数。即url/{id}这种形式。?传值@RequestParam获取查询参数。即url?name这种形式用注解@RequestParam绑定请求参数到方法入参当请求参数username不存在时会有异常发生,可以通过设置属性requiredfalse解决,例如:@R
Wesley13 Wesley13
1年前
JAVA 数组作为方法返回值—返回地址
packageCode411;/一个方法可以有0,1,多个参数,但只能有0和1个返回值希望一个方法产生多个结果数据进行返回数组作为方法的参数,传递进去的是数组的地址值。/publicclassCodeAaaryReturn{publicstaticvoidmain(Stringargs){int
helloworld_28799839 helloworld_28799839
6个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue
九旬 九旬
5个月前
函数参数传递
函数参数传递在JavaScript中函数传参,分为两种:基础类型(Number、String、Boolean..)引用类型(Object、Array、Funcion..)基础类型传参看下面的例子:js