首页 > 其他分享 >引用

引用

时间:2023-05-31 15:56:08浏览次数:23  
标签:函数 int 内存空间 引用 返回值 变量

引用 不是新定义一个变量,而 是给已存在变量取了一个别名 ,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。

引用的特性:
1.在定义时必须初始化,之后不可更改。
2.引用不可以为NULL。
3.一个变量可以有多个引用。

引用的使用:
格式如下:
类型 &引用变量名 = 引用实体;
1.常引用。
2.引用做函数参数。
3.引用做函数返回值。
引用作为返回值的注意点:
A.不能返回局部变量的引用。
B.不能返回函数内部new分配的内存的引用。
这些引用所对应的内存数据在函数结束时会被销毁

#include <iostream>

using namespace std;

int changeNum(int &x)
{
    x = 12;
    cout << "作为参数输出:" << x << endl;
    return x+1;
}

int main(int argc, char *argv[])
{
    int num = 11;
    int &qnum = num;
    // 作用一:常引用。其值不可修改。也可以写成 int const &NUM = num;
    const int &NUM = num;
    // 作用二:引用做函数参数。
    // 作用三:引用做函数返回值。
    printf("作为返回值输出:%d", changeNum(qnum));

    return 1;
}

输出:
作为参数输出:12
作为返回值输出:13

 

标签:函数,int,内存空间,引用,返回值,变量
From: https://www.cnblogs.com/kbqlm/p/17446385.html

相关文章

  • 为什么 C++ 有指针了还要引用
    引用传递,只是明面上,没有使用值传递,值传递本身是不可避免的。编译器,暗地里通过指针(或者其他可以替代指针的数据类型)的值传递,替换了引用传递。所以引用传递,实质上是地址传递,别名这东西只是概念,是一种抽象,别名是没法传递的。别名,可不是真实的数据类型。因为,函数传递参数需要,数据复制,......
  • C#引用类型带ref关键字的用处
    1.在C#中有两个大的数据类型,值类型和引用类型。1)任何的结构体(例如:structInt32...)或者是枚举都是值类型。2)能被称作"类"的,则为引用类型,比如你用如下关键字(class、interface、delegate、record),或者是使用C#内置的引用类型:dynamic、object、string。引用类型和值类型。引用类......
  • 什么是 JavaScript 里的循环引用(circular references)
    JavaScript的循环引用(circularreferences)是指在对象之间存在相互引用的情况,形成一个闭环,导致对象无法被完全释放和垃圾回收。循环引用发生在当一个对象的属性或成员引用另一个对象,并且这个被引用的对象又直接或间接地引用回原始对象,从而形成一个循环。当存在循环引用时,JavaScrip......
  • 分组,捕获,反向引用以及String类中使用
    1. 提出要求  896请看下面问题:给你一段文本请你找出所有四个数字连在一 起的子串,并且这四个数字要满足①第1位与第4位相同②第2位与第3位相同,比如1221,5775,……2. 介绍  896要解决前面的问题,我们需要了解正则表达式的几个概念:1. 分组我们可以用圆括号组成一个比较复杂的匹......
  • 译文:理解Java中的弱引用
    不久之前,我面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给我介绍一些Java中得弱引用吗?”,如果面试者这样说,“嗯,是不是垃圾回收有关的?”,我就会基本满意了,我并不期待回答是一篇诘究本末的论文描述。然而事与愿违,我很吃惊的发现,在将近20多个有着平均5年开发经......
  • Spring bean的循环引用问题
    循环依赖:两个或两个以上的bean循环引用。例如:A依赖B,B依赖A。Spring有三种循环依赖问题:(1)构造器的循环依赖:Spring无法解决构造器的循环依赖问题,但是可以使用@Lazy将bean声明为懒加载,什么时候用到这个bean在创建。(2)非单例bean的setter循环依赖:Spring无法解决非单例bean的循环依赖......
  • 【重学C++】05 | 说透右值引用、移动语义、完美转发(下)
    文章首发【重学C++】05|说透右值引用、移动语义、完美转发(下)引言大家好,我是只讲技术干货的会玩code,今天是【重学C++】的第五讲,在第四讲《【重学C++】04|说透右值引用、移动语义、完美转发(上)》中,我们解释了右值和右值引用的相关概念,并介绍了C++的移动语义以及如何通过右值引......
  • shell正则匹配捕获引用进行IP匹配
    在服务器上加了一个服务检测机制,用到正则来匹配IP和捕获分组。shell和其他语言一样也可以使用正则分组捕获,不过不能使用$1或1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]}简单的测试如下所示:#!/bin/baship="121.0.2.2"if[......
  • JavaScript函数传参原理详解——值传递还是引用传递
    讨论JavaScript的传参原理之前,我们先来看一段曾经让笔者困惑了一段时间的代码vartestA=1;vartestB={};functiontestNumber(example){example=2;}functiontestObj(example){example.test=1;}testNumber(testA);testObj(testB);console.log(testA);//......
  • python---引用其他py文件中的函数-yuan
    /user/test:....A........a.py....B........b.pya.py:deffa(): print("a")b.py想调用a.py中的函数fa():sys添加路径方法importsyssys.path.append("test/A")fromaimport*fa()init方法-1:在A文件夹和B文件夹中新建__init__.py文件,目录变成:test:....A...........