精华内容
下载资源
问答
  • 引用调用的作用
    千次阅读
    2019-08-13 22:57:38

    传值调用
    实参---->形参(实参传数给形参,形参获得实参的数值),改变形参不改变原先的实参,因为两者在获得值之后没有任何关系。

    引用调用
    实参---->形参(实参传地址给形参,形参获得实参的地址),改变形参会反映在存储单元中,实参会被改变。

    只有实参传值或者地址给形参!
    没有形参穿值或者地址给实参的说法!

    形参没有确定的值,只能是变量。
    实参可以是常量、变量、表达式、函数。
    实参可以是表达式, 但不是“任意”,表达式计算结果的 类型 必须与 形参一致。当然数值不能超界溢出。

    更多相关内容
  • 指针和引用: 指针是一个变量,其值为另一个变量的地址。引用则可以看做是一个变量的别名。 #include <iostream> using namespace std; int main() { int a = 1; int *p = &a; cout << "a: " ...

    指针和引用:

    指针是一个变量,其值为另一个变量的地址。引用则可以看做是一个变量的别名。

    #include <iostream>
    using namespace std;
    int main() {
        int a = 1;
        int *p = &a;
        cout << "a: " << a << endl;
        cout << "&a: " << &a << endl;
        cout << "p: " << p << endl;
        cout << "*P: " << *p << endl;
        return 0;
    }
    
    
    运行输出结果:
    a: 1
    &a: 0x7fff8e9e86a4
    p: 0x7fff8e9e86a4
    *P: 1
    

    指针调用和引用调用:

    首先来看一段示例代码:

    #include <iostream>
    using namespace std;
    void change_value(int a);
    int main() {
        int a = 1;
        cout << "a: " << a << endl;
        change_value(a);
        cout << "a: " << a << endl;
        return 0;
    }
    void change_value(int a) {
        a = 0;
    }
    
    运行输出结果为:
    a: 1
    a: 1
    

    可以看到我们想要实现的功能是改变变量的值,但是实际上并没有达到我们想要的效果。这种情况属于函数参数中的传值调用,该方法把参数的实际值复制给函数的形式参数,修改函数内的形式参数对实际参数没有影响。另外两种便是指针调用和引用调用:指针调用把参数的地址复制给形式参数,在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数;引用调用把参数的引用复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。那么既然这两种方式都能改变实际参数的值,我们该选用哪一种呢?一般情况下,应该使用引用而不是指针,引用可以让程序更简洁并易于理解。此外,引用比指针安全:不可能存在无效的引用,也不需要显式的解除引用。对象的引用甚至可以像指针那样支持多态性。只有在需要改变所指地址的时候,才需要指针。例如:当动态分配内存的时候,应该将结果存储在指针而不是引用中。示例代码如下:

    #include <iostream>
    using namespace std;
    void change_value_1(int *a);
    void change_value_2(int &a);
    int main() {
        int i = 1;
        int *a = &i;
        int &b = i;
        cout << "i: " << i << endl;
        change_value_1(a);
        cout << "i: " << i << endl;
        change_value_2(b);
        cout << "i: " << i << endl;
        return 0;
    }
    void change_value_1(int *a) {
        *a = 0;
    }
    void change_value_2(int &a) {
        a = 2;
    }
    
    运行输出结果为:
    i: 1
    i: 0
    i: 2
    

    二级指针和指针引用:

    上面我们已经说到指针和引用可以改变实际参数的值,那么假如我们现在想改变指针变量的值即改变指针的指向怎么办呢?用到的则是二级指针和指针引用。下面看一段代码,实现的功能是交换两个指针变量的指向:

    #include <iostream>
    using namespace std;
    void swap_1(int **a, int **b);
    void swap_2(int *&a, int *&b);
    int main() {
        int a = 1;
        int b = 2;
        int *c = &a;
        int *d = &b;
        int **e = &c;
        int **f = &d;
        int *&g = c;
        int *&h = d;
        cout << "*c: " << *c << endl;
        cout << "*d: " << *d << endl;
        swap_1(e, f);
        cout << "*c: " << *c << endl;
        cout << "*d: " << *d << endl;   
        swap_2(g, h);
        cout << "*c: " << *c << endl;
        cout << "*d: " << *d << endl; 
        return 0;
    }
    void swap_1(int **a, int **b) {
        int *temp = *a;
        *a = *b;
        *b = temp;
    }
    void swap_2(int *&a, int *&b) {
        int *temp = a;
        a = b;
        b = temp;
    }
    
    运行输出结果:
    *c: 1
    *d: 2
    *c: 2
    *d: 1
    *c: 1
    *d: 2
    
    

     

    展开全文
  • Hereyou will learn about difference between call by value ... 在这里,您将了解C中按值调用和按引用调用之间的区别。 There are two different ways of passing values to functions: call by value and call ...

    c语言 引用调用

    Here you will learn about difference between call by value and call by reference in C.

    在这里,您将了解C中按值调用和按引用调用之间的区别。

    There are two different ways of passing values to functions: call by value and call by reference. They are also called as pass by value and pass by reference.

    将值传递给函数的方式有两种:按值调用和按引用调用。 它们也称为按值传递和按引用传递。

    在C中按值调用 (Call by Value in C)

    In call by value method a copy of actual parameters is passed which is stored in formal parameters.

    在按值调用方法中,传递实际参数的副本,该副本存储在形式参数中。

    Actual Parameters: The parameters that are passed while calling the function are called actual parameters.

    实际参数:调用函数时传递的参数称为实际参数。

    Formal Parameters: The parameters that hold the values of actual parameters are called formal parameters.

    形式参数:保存实际参数值的参数称为形式参数。

    In call by value method, if any changes are done in formal parameters then actual parameters are not changed.

    在按值调用方法中,如果对正式参数进行了任何更改,则实际参数不会更改。

    Let’s take an example of call by value in C language.

    让我们以C语言中的按值调用为例。

    Example:

    例:

    #include<stdio.h>
     
    void fun(int x)
    {
    	x=x+5;
    }
     
    int main()
    {
    	int a=10;
    	printf("Before calling\na=%d",a);
    	fun(a);
    	printf("\n\nAfter calling\na=%d",a);
    	
    	return 0;
    }

    Output:

    输出:

    Call by Value in C

    As you can clearly see in output that after calling the function and doing changes in formal parameter x, the actual parameter a is not changed.

    如您在输出中清楚看到的那样,在调用函数并对形式参数x进行更改之后,实际参数a不会更改。

    在C中通过引用调用 (Call by Reference in C)

    In call by reference method, reference or address of actual parameters is passed which is stored in formal parameters.

    在按引用调用方法中,将传递实际参数的引用或地址,并将其存储在形式参数中。

    If any changes are done in formal parameters then actual parameters are also changed.

    如果对形式参数进行了任何更改,则实际参数也会更改。

    Let’s take an example of call by reference in C language.

    让我们以C语言中的引用调用为例。

    Example:

    例:

    #include<stdio.h>
     
    void fun(int *x)
    {
    	*x=(*x)+5;
    }
     
    int main()
    {
    	int a=10;
    	printf("Before calling\na=%d",a);
    	fun(&a);
    	printf("\n\nAfter calling\na=%d",a);
    	
    	return 0;
    }

    Output:

    输出:

    Call by Reference in C

    You can clearly see in output that after calling the function and doing changes in formal parameter x, the actual parameter a is also changed.

    您可以从输出中清楚地看到,在调用函数并对形式参数x进行更改之后,实际参数a也将更改。

    Difference between Call by Value and Call by Reference in C

    C中按值调用和按引用调用之间的区别 (Difference between Call by Value and Call by Reference in C)

    S. No.Call by ValueCall by Reference
    1.A copy of actual parameters is passed into formal parameters.Reference of actual parameters is passed into formal parameters.
    2.Changes in formal parameters will not result in changes in actual parameters.Changes in formal parameters will result in changes in actual parameters.
    3.Separate memory location is allocated for actual and formal parameters.Same memory location is allocated for actual and formal parameters.
    序号 按价值致电 通过参考电话
    1。 实际参数的副本将传递给形式参数。 实际参数的引用将传递给形式参数。
    2。 形式参数的更改不会导致实际参数的更改。 形式参数的更改将导致实际参数的更改。
    3。 为实际和形式参数分配了单独的存储位置。 相同的内存位置分配给实际参数和形式参数。

    If you have any doubts related to above tutorial then you can ask it by commenting below.

    如果您对以上教程有任何疑问,可以在下面评论中提出。

    翻译自: https://www.thecrazyprogrammer.com/2015/12/difference-between-call-by-value-and-call-by-reference-in-c.html

    c语言 引用调用

    展开全文
  • C++ 引用调用方法

    千次阅读 2020-07-21 21:45:36
    C++引用的使用 1.引用不能是空引用 2.引用是实体对象的别名 3.引用和实体对象共用同一个空间(地址相同) 1. 引用的概念 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; int ...

    C++ 引用调用方法

    1.引用不能是空引用
    2.引用是实体对象的别名
    3.引用和实体对象共用同一个空间(地址相同)

    1. 引用的概念

    #define _CRT_SECURE_NO_WARNINGS 1
    #include <iostream>
    using namespace std;
    int main()
    {
    	int a = 10;
    	int &b = a;//引用
    	cout << a << endl;
    	cout << b << endl;
    	cout << &a << endl;
    	cout << &b << endl;
    	system("pause");
    }
    

    在这里插入图片描述

    2. 引用的实例

    #define _CRT_SECURE_NO_WARNINGS 1
    #include <iostream>
    using namespace std;
    void Swap(int &x, int &y)//形参通过引用实参来达到传参的目的
    {
    	int tmp = x;
    	x = y;
    	y = tmp;
    }
    int main()
    {
    	int a = 10;
    	int b = 20;
    	cout << "a=" << a << ",b=" << b << endl;
    	Swap(a, b);
    	cout << "a=" << a << ",b=" << b << endl;
    	system("pause");
    }
    

    在这里插入图片描述

    展开全文
  • 近期在项目中遇到一个场景,在多层级调用中需要传递上下文,调用过程中上线文对象可能为空,想通过一个公共方法处理上下文,当上下文为空时生成上下文对象,执行相关操作后将该上下文对象向后传递。大致逻辑如下: ...
  • C++ 引用作用

    千次阅读 2019-06-20 10:35:05
    1. 引用作为函数的参数,其作用与指针作为函数参数相似,函数对形参的操作,等于对实参本身进行操作; 2. 函数调用时,系统采用值传递的方式将实参的值传递给形参,系统会在内存中开辟空间来存储形参变量,并将实参...
  • 引用调用与传值调用

    千次阅读 多人点赞 2017-10-26 12:20:01
    以下关于传值调用与传引用调用的叙述中,正确得是()。 ① 在传值调用方式下,可以实现形参和实参间双向传递数据的效果 ② 在传值调用方式下,实参可以是变量,也可以是常量和表达式 ③ 在引用调用方式下,...
  • 除了四类八种基本类型外,所有的类型都称为引用类型(如:数组,类,接口,字符串) 值传递 基本数据类型赋值都属于值传递; 值传递传递的是实实在在的变量值,是传递原参数的拷贝,值传递后,实参传递给形...
  • 右值引用作用

    千次阅读 2019-08-29 21:14:34
    文章目录右值引用Move SemanticsPerfect Forwarding参考 右值引用 自从引入了这个右值引用之后,我们把之前通常叫的引用称为左值引用。 不同 左值引用:我们之前所说的别名 右值引用:大部分时间和左指引用一样,...
  • 形参&实参,传值调用&引用调用

    千次阅读 多人点赞 2019-03-20 09:11:00
    引用调用传值调用传值调用的定义传值调用的代码实例引用调用引用调用的定义引用调用的代码实例 引言 相信很多C语言初学者都知道形参实参的概念,但在函数调用中,仍然还有很多人会混淆,本文将借助示例代码详细解释...
  • c++中引用作用

    千次阅读 2019-07-06 15:55:50
    引用的基本语法 用途起别名 Type &别名=原名 引用必须初始化 一旦初始化后,不能修改 对数组建立引用 #include<iostream> using namespace std; //1.引用基本语法 ...
  • C语言函数调用三种方式:传值调用,引用调用和传地址调用
  • 传地址调用和传引用调用的区别

    千次阅读 2017-09-05 21:13:17
    传地址调用和传引用调用的区别相同点: 传引用和传地址,原理上都是将参数变量的地址传递给被调函数。所以在函数内部修改参数的值时,均可返回修改之后的结果给调用者。 不同点: 引用一定会指向一个对象,而指针...
  • 引用调用

    2014-06-04 10:11:28
    前几天有朋友问我,什么是引用调用,我告诉他要养成
  • 传值引用和调用引用的区别

    千次阅读 2019-06-22 03:34:35
    传值引用一般就是生成一个临时对象,而引用调用是调用参数本身。 参照下面C语言代码理解: 在 test.h文件里实现两个方法  #include <stdio.h> /*交换两个数*/ void exchange(int x,int y){ int ...
  • WCF服务创建,并调用(调用过程,不需添加服务引用)。 打破传统的添加服务引用的方式,直接通过地址调用。请求和返回结果以JSON的形式来添加
  • 大多处刚接触程序的小伙伴在学习C/C++的过程中都会遇到函数传值调用,传址调用和传引用的概念,刚开始接触时肯定一时无法理解三者的区别和联系,可能有一部分小伙伴可能学了很长接触很长时间也一直对三者的概念有...
  • 相关的基本概念: ... 传引用调用:传引用调用中,如果传递的参数是引用数据类型,参数视为实参。在调用过程中,将实参的地址传递给了形参,形参上的改变都发生在实参上。 基本数据类型:有八种 整数类...
  • 有些程序员,认为java对对象采用的是引用调用,实际上这种理解是不对的!!!       举例代码: 先写一个People类 package diaoYong; class People { private String name; public People(String str...
  • 调用函数时,有三种向函数传递参数的方式: 调用类型 描述 传值调用 该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。 指针调用 该方法把参数的地址...
  • 我们都知道,当存在函数嵌套时,如果内部函数级作用域中引用了外部函数级作用域的变量,将会产生闭包,延长引用变量的生存周期 那么如果是函数级作用域内部引用外部块级作用域的变量呢 看代码 var a = []; // 将三个...
  • 引用调用 (c/c++)

    千次阅读 2018-10-10 12:46:07
    引用,是C++中提出来的一种新的使用变量的方式,即,给实际变量起个别名,通过这个别名来引用实际的变量。标准C中不支持变量的引用。只不过有这种方法。 #include <stdlib.h> #include <stdio.h> void...
  • JNI:全局引用&局部引用&弱全局引用

    千次阅读 2022-03-05 00:44:08
    从Java虚拟机创建的对象传到本地 C/C++ 代码时就会产生引用。根据Java的垃圾回收机制,只要有引用存在就不会触发该引用指向的Java对象的垃圾回收。这些引用在 JNI 中分为三种全...
  • 引用大佬的博客: Java:强引用,软引用,弱引用和虚引用 建议直接看大佬的博客,我这里只做总结。 总结 强引用 相当于 Object obj=new Object()这种引用就是强引用,即使OOM也不会被垃圾回收器进行回收 软引用 如果...
  • 1. 走向毁灭的函数循环调用如果多个函数相互调用,构成闭环,就形成了函数的循环调用。下面的例子中,函数a在其函数体中调用了函数b,而函数b在其函数体中又调用了函数a,这就是典型的函数循环调用。此种情况下,...
  • 传值调用与引用调用

    千次阅读 2017-07-13 00:46:09
    调用函数和被调用函数之间交换信息的方法有两种: 被调用函数把返回值返回给调用函数 ... 引用调用(Call by reference): 引用是C++中增加的数据类型,当形参为应用类型时,形参名实际上是实参名
  • 方法引用:  方法引用返回的是接口的实现  private static &lt;T&gt; Iterable&lt;T&gt; itToIterable(Stream&lt;T&gt; stream) { return stream::iterator; //编译通过此处返回的是...
  • C语言引用方式调用函数

    千次阅读 2019-08-14 12:54:09
    引用方式调用函数 通过引用传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。 传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问。 /* 函数定义...
  • 引用调用和传值调用

    千次阅读 2017-05-09 15:58:56
    1.传值调用又分为数据传值调用和地址传值调用。 数据传值调用方式是将实参的...2.引用调用是将实参变量值传递给形参, 而形参是实参变量的引用名。引用是给一个已有变量起的别名, 对引用的操作就是对该已有变量的操

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,316,761
精华内容 1,726,704
关键字:

引用调用的作用