赋值-引用形参和return有什么区别和联系?

问题描述

引用形参和return有什么区别和联系?

形参是对地址进行操作。什么叫对地址进行操作?既然有时赋值形参无法把改变的变量传递给主函数,要传递只能用引用形参,那和用赋值形参,然后在被调函数最后加return的效果是否相同?在原理上有是否有什么区别?在本质上是否相同?是否可以替换?

解决方案

从编程的角度来说,都可以实现你要的目的。
但是两者产生的机器码不同,语法也不同,不知道你说的相同不同是从什么层面看。

事实上,微软的com编程,就使用指针而不是返回值来返回函数运行的结果,而返回值留给返回函数运行的状态和出错代码。这也是一种编程风格。

解决方案二:

首先你得弄清传值和传引用的区别。一般传值的话会在参数传入
被调函数的时候做一个实参的拷贝,返回传值也是一样。但传引用就
一个变量,不会拷贝了。被调函数直接用主调函数里的变量,这样对
类来说能提高效率。并且这个变量在被调函数中做到的所有改变在主调函数中一样有效
因为就是一个变量。

解决方案三:

都可以实现你的需求,却别是语法上的区别,
可以先考虑返回值,不过C++不支持多返回值,所以需要返回多个时,可以通过参数

解决方案四:

原理上说,返回值利用的是寄存器,而参数使用的是堆栈

时间: 2024-10-29 21:22:53

赋值-引用形参和return有什么区别和联系?的相关文章

浅谈Java中的克隆close()和赋值引用的区别_java

学生类Student: package 克隆clone; /*要克隆必须实现这个借口:Cloneable,以标记这个对象可以克隆 Cloneable:此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制. 这个接口是标记接口,告诉我们实现该接口的类就可以实现对象的复制了. */ public class Student implements Cloneable { private String name; private int ag

引用形参 指针形参-关于引用形参和指针形参的形参的理解问题

问题描述 关于引用形参和指针形参的形参的理解问题 自己总是认为指针形参和引用形参的区别很小,他们都可以对实参进行改变想了解一下他们的具体区别??? 解决方案 指针,引用都可以修改所指向的内容.这点是他们最大的共同点,也是他们使用最多的地方.区别是指针可以为空,而引用不能为空引用. 解决方案二: 标准 C 中是没有引用形参的,只能使用指针形参.C++ 引入指针形参是为了降低指针灵活性带来的风险,指针形参不仅可以将数据的引用传入函数,还可以在函数内改变这个指针,也就是说在函数内部可以改变调用域的变量

template-c++ 编写类似于标准库中find算法的模板,非引用形参和引用形参的区别是什么

问题描述 c++ 编写类似于标准库中find算法的模板,非引用形参和引用形参的区别是什么 #include <iostream> #include <string> #include <vector> using namespace std; template<typename Init,typename T> Init find(Init begin,Init end,const T& val){ while(begin!=end){ if(val

php function用法如何递归及return和echo区别

 这篇文章主要介绍了php function用法如何递归及return和echo区别,需要的朋友可以参考下  代码如下: <?php  //模拟sql数据  $array = array(0=>'apple',1=>'banana',2=>'cat',3=>'dog',4=>'egg','5'=>'father');    //function 用法1  //arr 是传入的数据 $con 是条件  function f_1($arr,$con){  //这里的

JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别_javascript技巧

 原生js使用forEach()与jquery使用each()遍历数组,return false 的区别: 1.使用each()遍历数组a,如下: var a=[20,21,22,23,24]; $.each(a, function(index,val) { console.log('index='+index); if(index==2){ return false; } console.log('val='+val); }); 结果如下: 从运行的效果可以看出,return 相当于循环中的b

php function用法如何递归及return和echo区别_php技巧

复制代码 代码如下: <?php //模拟sql数据 $array = array(0=>'apple',1=>'banana',2=>'cat',3=>'dog',4=>'egg','5'=>'father'); //function 用法1 //arr 是传入的数据 $con 是条件 function f_1($arr,$con){ //这里的 array 是这个函数内私有的,不会和出面的array冲突 //所以,外地面的 array不里直接在内面用,里面的a

引用返回值 引用形参-在C++中,很简单的引用返回值函数,可以返回两个引用的相加和吗

问题描述 在C++中,很简单的引用返回值函数,可以返回两个引用的相加和吗 #include using namespace std; void main() { int& sum(int &a,int& b); int a=1,b=2; sum(a,b)+=1; } int &sum(int & a,int & b) { return a+b; } 在VC6.0中编译出错error C2440: 'return' : cannot convert from

C#: 引用变量与数值变量的区别_C#教程

1. 值参数当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法.被调用的方法不传经修改内存中实参的值,所以使用值参数时,可以保证实际值是安全的.在调用方法时,如果形式化参数的类型是值参数的话,调用的实参的值必须保证是正确的值表达式.在下面的例子中,程序员并没有实现他希望交换值的目的: 复制代码 代码如下: using System;class Test{static void Swap(int x,int y){int temp=x;x=y;y=temp;}stat

一道优雅面试题分析js中fn()和return fn()的区别_javascript技巧

在js中,经常会遇到在函数里调用其它函数的情况,这时候会有 fn() 这种调用方式,还有一种是 return fn() 这种调用方式,一些初学者经常会被这两种方式给绕晕了.这里用一个优雅的面试题来分析一下两种方式的不同之处.  var i = 0; function fn(){ i++; if(i < 10){ fn(); }else{ return i; } } var result = fn(); console.log(result); 这是一道隐藏了坑的面试题,看似很简单,大部分人可能想