精华内容
下载资源
问答
  • 形参是指被调用方法中参数 实参是指传递给方法参数 (1)值类型传参是按值传递 ...那么形参也是指向同一个值,对形参进行操作也就是对地址指向值进行操作,当形参发生改变实参也会发生...

    形参是指被调用方法中的参数

    实参是指传递给方法的参数

    (1)值类型传参是按值传递

      值类型传参,形参接受到的是实参的一个副本,即形参发生变化,实参不会发生任何变化

    (2)引用类型参数按值传递

    当参数传递的是引用类型时,传递和操作是目标的地址,由于地址指向的是实参的参数;

    那么形参也是指向的同一个值,对形参进行操作也就是对地址指向的值进行操作,当形参发生改变时实参也会发生改变

    (3)string引用类型参数传递按值传递特殊情况

    string 具有不可变性,当string类型被赋值则他是不可变的

    为string的形参复制实际上是重新分配了一内存,形参指向新内存

    (4)值类型与引用类型参数传递按引用类型

    这种情况是使用ref与out情况下,这样就可以实现参数传递按引用类型传递

    http://www.cnblogs.com/lbonet/p/6907234.html

     

    转载于:https://www.cnblogs.com/SeNaiTes/p/7676902.html

    展开全文
  • 形参是指被调用方法中参数 实参是指传递给方法参数 (1)值类型传参是按值传递 ...那么形参也是指向同一个值,对形参进行操作也就是对地址指向值进行操作,当形参发生改变实参也会发生改变 (...

    形参是指被调用方法中的参数

    实参是指传递给方法的参数

    (1)值类型传参是按值传递

      值类型传参,形参接受到的是实参的一个副本,即形参发生变化,实参不会发生任何变化

    (2)引用类型参数按值传递

    当参数传递的是引用类型时,传递和操作是目标的地址,由于地址指向的是实参的参数;

    那么形参也是指向的同一个值,对形参进行操作也就是对地址指向的值进行操作,当形参发生改变时实参也会发生改变

    (3)string引用类型参数传递按值传递特殊情况

    string 具有不可变性,当string类型被赋值则他是不可变的

    为string的形参复制实际上是重新分配了一内存,形参指向新内存

    (4)值类型与引用类型参数传递按引用类型

    这种情况是使用ref与out情况下,这样就可以实现参数传递按引用类型传递

    C#中out和ref之间的区别

     

    转载于:https://www.cnblogs.com/lbonet/p/6907234.html

    展开全文
  • (注:ListNode** pHead是正常,却是是出了函数也会改变链表实参本身)。 还有一个问题就是如果在函数里delete掉形参链表一个节点,也会影响链表实参本身,这又是什么原理。 完整代码如下: 1)当形参根...
  • c语言学习笔记

    2013-04-02 21:44:00
    传值调用和传值调用: 传值只是把其值传给副本,副本改变...在函数调用中,传址是把实参地址传给形参,运算中是对实参进行操作,会改变实参的值。传址是将实参地址传递 给了形参就是说形参里保存是实参...

    传值调用和传值调用:

    传值只是把其值传给副本,副本改变(比如交换)但原值不改变。在函数调用中,传值是把实参的值“拷贝”给形参,运算中是对形参进行操作,实参的值在运算中不会发生变化。

    传址是把变量的地址传给地址变量,如果修改其变量所指的内容,原值就会改变。在函数调用中,传址是把实参的地址传给形参,运算中是对实参进行操作,会改变实参的值。传址是将实参的地址传递 给了形参,也就是说形参里保存的是实参的地址,而形参本身也分配了内存空间,也会有自己的地址,所以你改变形参的地址,是不会改变实参的地址的

    举个例子:
    你电脑的D盘有个文本文件:readme.txt
    传值就好比你拷贝readme.txt到桌面,虽然文件内容都一样,但是你修改桌面的文件,D盘的文件不会改变。
    传址就好比创建了一个readme.txt的快捷方式到桌面,这时你改变快捷方式或是源文件,另一个都会跟着改变。

    转载于:https://www.cnblogs.com/fare/archive/2013/04/02/2996557.html

    展开全文
  • c++学习之引用

    2018-05-20 15:04:08
    如:我们班明少奇我可以叫他小明,小明和明少奇都是他,我如果打了小明那么明少奇也会改变(受伤)对吧,这就是引用好处,以往传递都是将一个实参传给形参,然后形参进行变化但不会改变实参的(单向值传递),...

    引用与复制构造函数,比较头疼的两个问题。首先说引用,引用就是给一个东西起个小名,如:我们班的明少奇我可以叫他小明,小明和明少奇都是他,我如果打了小明那么明少奇也会改变(受伤)对吧,这就是引用的好处,以往的传递都是将一个实参传给形参,然后形参进行变化但不会改变实参的(单向值传递),这样可以避免函数的副作用。

    引用有以下三种主要作用:

    1.      参数传递。

    以往参数传递进行数值交换为

    1)执行swap函数后,想要主函数内的变量值变化,用上述方式写出代码:

    #include<iostream>

    usingnamespacestd;

    int main()

    {

          void swap(int ,int);

          int i =3,j = 5;

          swap(i,j);

          cout<<"i="<<i<<endl<<"j="<<j<<endl;

          getchar();

          return0;

    }

     

    void swap(int a,int b)

    {

        int temp;

        temp = a;

        a =b;

        b= temp;

    }


    运行结果: 
    i = 3 
    j = 5

    显然值没有带回,i和j的值在执行后没有发生变化。

    那么我们可以用指针的形式进行两个数值的交换如

    该方式形参是指针变量,实参是一个变量的地址,调用函数时,形参得到的实参变量的地址,因此指向实参的变量单元。 

    2)指针
    然后我们修改下上面的程序:

    #include <iostream>
    using namespace std;
    int main()
    {
          void swap(int * ,int*);
          int i =3,j = 5;
          swap(&i,&j);
         cout<<"i="<<i<<endl<<"j="<<j<<endl;
          getchar();
          return 0;
    }
     
    void swap(int *a,int *b)
    {
        int temp;
        temp = *a;
        *a =*b;
        *b= temp;
    }

    运行结果: 
    i = 5 
    j = 3

    在程序的第13行,定义的函数的形参是指针,在第6行,调用的函数是传入的函数实参是变量的地址,实现了i和j的交换,但是这种方法不够直观,而且依旧是值传递的方式,只不过传递的是变量的地址而已。

    3)引用

    #include <iostream>
    using namespace std;
    int main()
    {
          void swap(int & ,int&);
          int i =3,j = 5;
          swap(i,j);
         cout<<"i="<<i<<endl<<"j="<<j<<endl;
          getchar();
          return 0;
    }
     
    void swap(int &a,int &b)
    {
        int temp;
        temp = a;
        a =b;
        b= temp;
    }

    运行结果: 
    i = 5 
    j = 3

    第13行,形参是声明的引用,注意这个引用并没有初始化,这就是上面提到的特例。而在第7行调用函数的过程中,实现了引用的初始化,这是传入的实参就是变量,而不是数值,所以做到了真正意义上的“变量传递”。

    2.    传递过来的为一个大型对象可以进行引用。

    3.     作为返回值进行引用

    要以引用返回函数值,则函数定义时要按以下格式:
    类型标识符 &函数名(形参列表及类型说明)
    {函数体}
      说明:
      (1)以引用返回函数值,定义函数时需要在函数名前加&
      (2)用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。(类的数据比较复杂所以用引用,不用给重新分配空间这也是为啥要用引用)

    (3不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了'无所指'的引用,程序会进入未知状态。

    (4可以返回类成员的引用

    以上有借鉴他人的地方主要是我懒不想打字了。

     

    展开全文
  • 关于四个swap函数归类

    千次阅读 2010-09-04 09:57:00
    在学习C语言函数那一章节的时候我们第一次认识了swap。当时书上举这个例子是...再后来,我们还学习了C++程序设计语言,了解到在C++中还有一种函数参数的传递方式即“引用调用”,而且引用调用过程中形参的变化也会
  • const string 是值传递 const string&...引用传递:是将实参的地址拷贝到形参处,像指针一样,修改形参的内容,实参也会改变,地址所用占得内存较小,资源消耗较小 一般使用引用传递比较快捷方便 ...
  • Java值传递问题

    2020-07-13 08:42:43
    如果实参是引用类型的话就不一样了,你改变形参的属性,那么实参的属性也会跟着变化,这难道不是引用传递吗? 看看加粗的字体,你可能就会突然感觉到好像有什么不对的地方 回答:为什么说引用类型的参数也是值...
  • 数组作为函数参数

    2020-11-21 22:07:57
    c语言不检查形参数组大小。参数传递时,直接将实参数组首地址传递给形参形参实参使用相同储存单元,因此一旦形参数值改变之后,实参也会跟着变化
  • 传入是B[1]地址,就是说x的改变会影响B[1]. I=1; x=x+2;//x为B[1],B[1]为3. B[I]=10;//直接赋值B[1]为10 I=2; x=x+2;//x为B[1],B[1]为12 执行完程序后B[1]为12,B[2]为2. (2)传值调用(call-by-value) 传值...
  • 原文C# 中 ref 和 out 意义和使用方法  向方法传递一个实参时,对应的形参会用实参的一个副本来初始化,不管...例如,对于引用类型,方法改变,只是会改变引用数据,但实参本身并没有变化,它仍然引用同一...
  • C++ Primer(十五) 函数

    2015-12-19 00:56:16
    该种类型的形参的改变就仅仅作用于副本而已,不会改变实参本身的原值。好处在哪里呢?你这个实参在函数体里面发生改变,但是你又不希望经过函数后,实参值的变化作用于函数体域外,这个时候传指针是不错的选择,...
  • 因为形参实参指向为同一空间,若在形参改变其指向空间值,实参对应空间中内容也会发生改变。 例如如下代码: p指针首先指向数组首地址,在函数print中,形参指向地址在逐渐变化,并读取对应位置值...
  • 向方法传递一个实参时,对应的形参会用实参的一个...例如,对于引用类型,方法改变,只是会改变引用数据,但实参本身并没有变化,它仍然引用同一个对象。    代码如下:     using System; using Syst
  • Java中方法参数传递

    2020-11-27 19:50:57
    如果参数是基本数据类型, 那传的就是这个参数的副本, 就是这个参数的值, 此时在方法中修改形参的值不会影响原来的实参 如果参数是引用类型, 那传的就是这个引用参数的副本, 副本存放的是参数的地址, 如果方法中...
  • 6.8 js学习笔记

    2020-06-08 20:50:04
    argument 1.Arguments对象 1)作用:用于储存调用函数时的所有实参。 当调用函数,并用实参赋值时,实际上参数列表已经保存到...即,在函数中,修改形参的值,arguments也会改变,反之亦成立。 3)arguments.callee是
  • Java参数传递机制

    2020-04-06 11:44:23
    方法参数传递机制: 形参的基本数据类型 它传递的是数据值,将数据重新复制了一份,所以不会改变 实参是引用数据类型 ...当传入之后如果发生改变,那将创建一个新的数据,所以是没有变化。 ...
  • 那么外面的实参属性的值也会发生相应的变化 类似引用传递,并不是就是引用传递 实际传送的是实参的一个地址的副本,所以参数的对象传递的是地址 static修饰的变量和方法都是属于整个类的,而不是单独属于哪一个...
  • 如果在函数内给形参赋新值,arguments相应也会随之改变,虽然值同步改变,但他们内存空间是独立。 但如果传入实参个数小于形参个数,而又在函数内对未被传参的形参赋值,那么arguments会不会相应变化呢? ...
  • c基础总结(1)

    千次阅读 2018-10-12 07:59:43
    一、常量与变量 ...变量在程序中存在有一定的作用域和生命周期,变量的作用域在本函数中,普通变量的声明周期在函数执行结束后其内存就被回收,这是函数传参时形参的改变不会影响实参的变化,在函数调用...
  • 文章标题

    2017-04-17 20:09:56
    c语言:利用数组名作函数参数,实现双向数据传递 数组名作函数参数与基本数据类型作函数参数...所以,当形参数组元素发生变化时,实参数组元素也会随着发生改变。 2.数组元素与数组名做实际参数区别? 数组
  • 可见实参的值不随形参的变化而变化。 二、函数的值  函数的值是指函数被调用之后, 执行函数体中的程序段所取得的并返回给主调函数的值。如调用正弦函数取得正弦值,调用例5.1的max函数取得的最大数等。对函数的...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

形参的变化也会改变实参