精华内容
下载资源
问答
  • 函数参数两种传递方式

    千次阅读 2020-03-27 19:02:11
    当调用函数有两种向函数传递参数方式: 一、传值调用 该方法把参数的实际值复制给函数的形式参数这种情况下,修改函数内的形式参数不会影响实际参数。 默认情况下,C 语言使用传值调用方法来传递参数。...

    如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。

    形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。
    当调用函数时,有两种向函数传递参数的方式:

    一、传值调用

    该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
    默认情况下,C 语言使用传值调用方法来传递参数。一般来说,这意味着函数内的代码不会改变用于调用函数的实际参数
    函数 swap() 定义如下:

    /* 函数定义 */
    void swap(int x, int y)
    {
       int temp;
    
       temp = x; /* 保存 x 的值 */
       x = y;    /* 把 y 赋值给 x */
       y = temp; /* 把 temp 赋值给 y */
      
       return;
    }
    

    现在,让我们通过传递实际参数来调用函数 swap():

    #include <stdio.h>
     
    /* 函数声明 */
    void swap(int x, int y);
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 100;
       int b = 200;
     
       printf("交换前,a 的值: %d\n", a );
       printf("交换前,b 的值: %d\n", b );
     
       /* 调用函数来交换值 */
       swap(a, b);
     
       printf("交换后,a 的值: %d\n", a );
       printf("交换后,b 的值: %d\n", b );
     
       return 0;
    }
    

    当上面的代码被编译和执行时,它会产生下列结果:

    交换前,a 的值: 100
    交换前,b 的值: 200
    交换后,a 的值: 100
    交换后,b 的值: 200
    
    

    上面的实例表明了,虽然在函数内改变了 a 和 b 的值,但是实际上 a 和 b 的值没有发生变化。

    二、引用调用

    通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。
    传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问。
    还是以上述代码为例:

    /* 函数定义 */
    void swap(int *x, int *y)
    {
       int temp;
       temp = *x;    /* 保存地址 x 的值 */
       *x = *y;      /* 把 y 赋值给 x */
       *y = temp;    /* 把 temp 赋值给 y */
      
       return;
    }
    

    现在,让我们通过引用传值来调用函数 swap():

    #include <stdio.h>
     
    /* 函数声明 */
    void swap(int *x, int *y);
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 100;
       int b = 200;
     
       printf("交换前,a 的值: %d\n", a );
       printf("交换前,b 的值: %d\n", b );
     
       /* 调用函数来交换值
        * &a 表示指向 a 的指针,即变量 a 的地址
        * &b 表示指向 b 的指针,即变量 b 的地址
       */
       swap(&a, &b);
     
       printf("交换后,a 的值: %d\n", a );
       printf("交换后,b 的值: %d\n", b );
     
       return 0;
    }
    

    当上面的代码被编译和执行时,它会产生下列结果:

    交换前,a 的值: 100
    交换前,b 的值: 200
    交换后,a 的值: 200
    交换后,b 的值: 100
    

    上面的实例表明了,与传值调用不同,引用调用在函数内改变了 a 和 b 的值,实际上也改变了函数外 a 和 b 的值。

    展开全文
  • 函数参数传递两种方式——值传递和引用传递

    万次阅读 多人点赞 2018-10-23 15:50:05
    传递包括实实在在的值传递以及指针传递(指针传递参数本质上是值传递方式,它所传递的是一个地址值),传递的都是实参的一个拷贝。 1、实实在在的“值”传递 #include &lt;iostream&gt; #include &...

    参考原文详细说明:https://www.cnblogs.com/codingmengmeng/p/5865510.html

    一、值传递

    值传递包括实实在在的值传递以及指针传递(指针传递参数本质上是值传递的方式,它所传递的是一个地址值),传递的都是实参的一个拷贝。

    1、实实在在的“值”传递

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    void function(int num){
    	//改变num的值
    	num = 100;
    }
    
    int main()
    {
    	int number;
    	number = 1;
    	function(number);
    	cout << number << endl;
    	return 0;
    }

    这样的值传递只能把一个函数中的值传递给另一个函数,当该值在被调函数中发生改变时,在原来的函数中并不会发生改变。因为被调函数的形参只有函数被调用的时候才会临时分配单元,一旦调用结束占用的内存便会释放,所以调用的函数中存储number的地址跟被调函数中num的地址不是一回事。

    那如果想让number通过被调函数改变怎么做呢?第一种是使用指针形式的值传递,第二种是使用引用传递。

    2、指针传递

    指针传递是通过地址间接的改变了实参的值。

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    void function(int* num){
    	//通过改变num对应地址的值来实现值的改变:形参num是一个指针,传递过来的是一个地址值,解引用即可访问到这个地址值映射的值
    	*num = 100;
    }
    
    int main()
    {
    	int number;
    	number = 1;
    	function(&number);
    	cout << number << endl;
    	return 0;
    }

    二、引用传递

    对引用的操作等于是对其指定的对象进行操作,当将实参传递给形参时,形参就指向了实参(形参与实参同义,是实参的一个别名)。

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    void function(int& num){
    	//通过引用改变num的值
    	num = 100;
    }
    
    int main()
    {
    	int number;
    	number = 1;
    	function(number);
    	cout << number << endl;
    	system("pause");
    	return 0;
    }

     

    展开全文
  • C语言形式参数传递两种方式

    千次阅读 2018-10-22 20:06:15
    C语言中实际参数(实参)与形式参数(形参)之间的传递方式有传值和传地址两种函数调用方式。 1.直接传值。 直接传值,fun函数里面改变a,b的值,不会改变主函数里面a,b的值。 #include&lt;stdio.h&gt;...

    C语言中实际参数(实参)与形式参数(形参)之间的传递方式有传值和传地址两种函数调用方式。

    1.直接传值。

    直接传值,在fun函数里面改变a,b的值,不会改变主函数里面a,b的值。

    #include<stdio.h>
    void fun(int a, int b)  // 此处a, b为形参
    {
        a++;
        b++;
    }
    void mian()
    {
        int a=1, b=2;    
        fun(a, b);  // 按传值方式调用函数fun,此处a,b为实参
        printf("%d, %d\n", a, b);  // 输出a=1, b=2
    }

    2.传地址方式

    在fun函数里面改变a.b的值,主函数里面a,b的值也会改变。

    #include<stdio.h>
    void fun(int *a, int *b)  
    {
        *a =3;
        *b =4;
    }
    void main()
    {
        int a=1, b=2;    
        fun(&a, &b);  // 按传地址方式调用函数fun
        printf("%d, %d\n", a, b);  // 输出a=3, b=4
    }

     

    展开全文
  • java中传递参数两种方式

    万次阅读 2017-11-08 09:16:45
    Java中有两种传递参数方式,分别为:  值传递:方法调用,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。  引用传递:也称为传地址。方法调用,...
    Java中有两种传递参数的方式,分别为:

      值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。

      引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。

           a.传递值的数据类型:八种基本数据类型和String(这样理解可以,但是事实上String也是传递的地址,只是string对象和其他对象是不同的,string对象是不能被改变的,内容改变就会产生新对象。那么StringBuffer就可以了,但只是改变其内容。不能改变外部变量所指向的内存地址)。
        b.传递地址值的数据类型:除String以外的所有复合数据类型,包括数组、类和接口 
    下面为值传递的例子:
             
      输出的结果是 a=3 b=4,传递的值并不会改变原值;
    引用传递的例子:
        
      输出结果是1 , 这意味着引用的值改变了原来的值     
    总结: 对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。 
      Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。 
      如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值.
      如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的地址,所以不会改变参数的值。
    展开全文
  • C语言函数返回值与参数传递

    千次阅读 2019-10-26 11:57:43
    C语言的函数中必不可少的就是参数传递,可以采用传值和传指针两种方式。 1.传值的形式:只是将参数值的拷贝传给函数,并非参数本体如: int test(int x,int y) { x=2*y; return x; } int main(void) { int a=0,b...
  • java 传递参数两种方式

    万次阅读 多人点赞 2015-10-19 15:39:28
    Java中没有指针,所以也没有引用传递了,仅仅传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能  值传递:方法调用,实际参数把它的值传递给对应...
  • Fragment传递参数两种方式

    千次阅读 2019-03-19 11:07:32
    我们经常fragment中传递参数,但是我们经常会使用一些不正常的手段,比如构造方法等之类的和其他的投机取巧的方法,这些方法都是不建议使用的,不利代码高效性和性能的要求,因此建议使用下面两种传递参数方式 ...
  • 上篇文章《c语言函数传参の结构体数组篇》提到了C语言的函数传参方式,百度了一一一大圈,两种的,也说三种的,简直把我搞晕了,其中争议的地方就是“引用传递方式。我看好多写三种方式的都把源代码代码贴...
  • C++中函数调用的三种参数传递方式详解

    万次阅读 多人点赞 2017-08-31 20:44:51
    原文地址:http://blog.csdn.net/cocohufei/article/details/6143476;  ...   C++中,参数传递方式是“实虚结合”。 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass b...
  • shell中脚本参数传递两种方式

    千次阅读 2019-05-15 15:29:27
    https://blog.csdn.net/sinat_36521655/article/details/79296181
  • swift有两种参数传递方式

    千次阅读 2018-11-14 22:36:45
    传递的是参数的一个副本,这样调用参数的过程中不会影响原始数据。 2.指针传递 指针传递参数本身引用(内存地址)传递过去,调用的过程会影响原始数据。 Swift众多数据类型中,只有class是指针传递,其余...
  • 函数参数种传递方式的区别

    万次阅读 2017-01-07 13:47:00
    问题提出:1、当一个类的对象作为实参数传递时,使用值传递和引用传递什么区别? 比如: DateType ExampleFun(CString &strFileName,…)与 DateType ExampleFun(CString strFileName,…)解答之前,我们先来看2...
  • mybatis 传递参数的三种方式

    万次阅读 2017-06-14 11:50:28
    mybatis 框架的主要工作是数据层, 侧重于与...mybatis 传递参数方式主要: 1. 多个参数传递方式  形式如:  GoodMapper.java:  public Good selectGood(String id, String name);  GoodMapper
  • 实现参数传递的几种方式

    千次阅读 2017-08-03 10:55:26
    由于web系统采用http协议浏览器和... 表单传递参数是一最简单,也是最基本的参数传递方式。注意:表单元素隐藏按钮的使用  方式二:带参数的url方式传递  带参数的url写法: url?参数名1=值1&参数名2=值2。
  • C# 窗体之间参数互相传递两种方法与使用

    千次阅读 多人点赞 2021-07-01 18:22:07
    传递方式有很多,只介绍一下比较常用的!! 注意:因为窗口间并没有关系,都需要公共的修饰符(public) 下面以登录界面为例子 左边为:登陆窗口 (Form1) 右边为:登录成功窗口 (Form2) 把Form1上的用户名...
  • C++函数传递参数方式有哪几?

    万次阅读 2017-09-04 22:58:51
    C++函数传递参数方式有以下四: (1) 值传递  当进行值传递时,就是将实参的值复制到形参中,而形参和实参不是同一个存储单元,所以函数调用结束后,实参的值不会发生改变,程序示例如下: #include using ...
  • C语言中函数参数传递的三种方式

    万次阅读 多人点赞 2017-07-22 21:09:40
    C语言中函数参数传递的三种方式(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而函数里对形参的改变不会影响到函数外的变量的值。(2)传址,就是传变量的地址...
  • c#的三种参数传递方式

    千次阅读 2018-08-09 14:52:26
    类型的参数传递变量地址给方法(引用传递),传递前变量必须初始化。 该类型与out型的区别与: 1).ref 型传递变量前,变量必须初始化,否则编译器会报错, 而 out 型则不需要初始化 2).ref 型传递变量,...
  • 参数两种传递方式详解

    千次阅读 2011-11-12 11:21:37
    PHP中参数有两种传递方式,分别是值传递和引用传递。值传递是将要传递的值作为一个副本进行传递;而引用传递则是传递引用对象的内存地址。 下面则是对这两个的详解  1:值传递传递参数在调用函数前后...
  • 第一是箭头函数传参 <button onClick={(value) => this.deleteRow(id, value)}>Delete Row</button> // 箭头函数传参 箭头函数没有this指向,默认是继承外部上下的this,所以箭头函数中的this指向...
  • int * 类型作为形参--值传递:形参p1,p2 也要分配内存空间,实参的值复制给形参(地址) */ void mySwap2(int *p1,int *p2){ //改变形参指针的指向,不会影响到实参 int *temp; temp=p1; p1=p2; p2=temp; } /...
  • 个页面传递参数实现的几种方式

    千次阅读 2018-04-24 12:34:40
    个页面传递参数实现的几种方式1.使用window.name:a页面:b页面:2.使用h5中的localStorage:a页面:b页面: 3.使用url传递参数:a页面:b页面: 
  • 1.使用HttpServletRequest ... 1.1 JSP页面传递参数:    1.2 controller使用HttpServletRequest getRequest的getParameter获取参数:    2.使用form表单提交实体entity。  要求form中的某个属性name和
  • vue向子组件传递参数两种方式

    千次阅读 2017-11-06 14:58:02
    github上下载了一个vue简单的入门项目,看到了不同以往的向子组件传递参数方式,特此记录 前提: 向子组件传递简单的参数fatherComponent为home 第一常规方式: export default { name: 'home', ...
  • 函数传递参数的三种方式,以及它们的区别 1.按值传递(pass by value) 使用这种方式,调用函数本省不对实参进行操作,也就是说,即使形参的值函数中发生了变化,实参 的值也完全不会受到影响,仍为...
  •  定义函数函数括号中的变量名成为形式参数,简称形参或虚拟参数主调函数中调用一个函数,该函数括号中的参数名称为实际参数,简称实参,实参可以是常量、变量或表达式。 注意:  1、C语言中实参和形参...
  • Restful传递数组参数两种方式

    千次阅读 2019-03-18 16:07:00
    第一,直接传递数组 js直接传递数组 var data = ["123","456"];that.loadDictionarys(data).subscribe({ next: res => { }, error: err => { } }); 后端接口直接接收数组 @POST...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,038,099
精华内容 415,239
关键字:

参数在传递时有两种方式