首页 > 编程语言 >C++引用(别名)

C++引用(别名)

时间:2024-08-02 13:29:14浏览次数:7  
标签:10 变量 int 别名 num C++ 引用

1.引用变量是一个别名,也就是说,是已经存在的某个变量另外一个名字。声明引用时,需要将其初始化为一个变量。引用只是访问数据的方式。

2.引用的格式:

变量类型 定义的变量名 = 变量;

变量类型 &引用变量名 = 定义的变量名;

3.引用的特点:①一个变量可取多个别名。②引用必须初始化,只有别名是不能成立的。③引用只能在初始化的时候引用一次 ,不能更改为转而引用其他变量。

4.C++引用

4.1基础数据类型的引用

#include<iostream>

using namespace std;
// 引用是相应变量的别名

int main(){
    int num=10;
    cout << "num:" << num << endl;
    cout << "&num:" << &num << endl;
    int &ref = num ;
    cout << "ref:" << ref << endl;
    cout << "&ref:" << &ref << endl;

    return 0;
}

可以看出ref为变量10的别名。

4.2指针类型的引用

指针类型的引用格式:类型  *&指针引用名 = 指针,其实就是地址的别名。

#include<iostream>

using namespace std;

int main(){
    int num=10;
    cout << "num:" << num << endl;
    cout << "&num:" << &num << endl;
    int *p = &num ;
    cout << "p:" << p << endl;
    // 这里理解为是变量地址的别名
    cout << "&p:" << &p << endl;
    int *&q = p;
    cout << "q:" << q << endl;
    cout << "&q:" << &q << endl;
    

    return 0;
}

 记住引用是变量的别名,引用是访问相应变量存储的数据的方式。我们向内存申请一个变量10,其中num就是10的别名,简单理解就是num和10一样。指针存储的是num(10)的内存地址,那其实内存地址也可以理解为一个变量,p就是地址变量的别名,int *&q=p,那么q也是地址的别名,*&p和*&q和p和q其实是等价的。

4.3函数类型的引用

#include<iostream>

using namespace std;

// 计算平方值
void GetSquare(int &num);

// 引用能够访问相应变量的内存单元,在编写函数时是十分有用的
// 函数类型的引用
int main(){
    int num=0;
    cout << "Enter num:" << endl;
    cin >> num;
    GetSquare(num);
    cout << "num:" << num << endl;
    return 0;
}

void GetSquare(int &num){
    num = (num) * (num);

}
将const用于引用,按引用向函数传递参数,此时可以极大提高性能,被调用函数直接调用函数栈,但是要确保被调用函数不能修改函数栈里面的变量很重要, 因此将const用于函数调用。
#include<iostream>

using namespace std;


void GetSquare(const int &num,int &result);
// 与前者的区别 该程序使用了两个参数 一个用于接受输入 一个用于存储运算结果
int main(){
    int num=0;
    int square=0;
    cout << "Enter num:" << endl;
    cin >> num;
    GetSquare(num,square);
    cout << "square:" << square << endl;
    return 0;
}

void GetSquare(const int &num,int &result){
    result = num * num;
}

 

标签:10,变量,int,别名,num,C++,引用
From: https://www.cnblogs.com/qhj384343045-/p/18338071

相关文章

  • C++第五篇 类和对象(下) 初始化列表
    目录1.再探构造函数2.类型转换3.static成员4.友元friiend1.再探构造函数(1).之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表,初始化列表的使用方式是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成......
  • C++核心编程
    C++核心编程主要针对C++面向对象编程技术,探讨C++中的核心和精髓1内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等堆区:由......
  • C/C++ 运算符优先级相关的注意事项
    在C/C++中,运算符优先级决定了表达式中各部分的计算顺序。理解并正确应用运算符优先级是确保程序逻辑正确性的关键。以下是关于C/C++运算符优先级相关的一些重要注意事项:优先级层次:C/C++中的运算符按优先级从高到低排序。例如,算术运算符(+、-、*、/)的优先级高于赋值运算符(=)......
  • VSCode编译运行和调试C++
    VSCode编译运行和调试C++欢迎关注我的B站:https://space.bilibili.com/379384819欢迎交流学习,vx:18074116692参考教程:详解Linux下使用vscode编译运行和调试C/C++-知乎(zhihu.com)vscode是文本编辑而非集成开发环境,需要经过配置才能在其上编译执行代码。本教程将介绍如下内容......
  • C++和C语言if else
    一、if。if(/*表达式*/)//如果表达式成立,执行大括号里的代码。如果表达式不成立,执行大括号下面的代码。{//代码}二、else。 else//else一般和if配对,如果if表达式不成立,执行else。如果if表达式成立,不执行else{//代码} 所以执行如上代码输出的是"1是单数"。......
  • C++入门基础
    文章目录一、C++的由来1、C++的起源2、C++的版本更新二、C++的第一个程序三、命名空间1、namespace的价值2、namespace的定义3、命名空间的使用四、C++输⼊&输出五、缺省参数六、函数重载七、引用1、引用的概念和定义一、C++的由来1、C++的起源C++的起源可......
  • C++类的组合和类的继承的区别
    C++类的组合和类的继承的区别类的组合:类的组合是一种将一个类的对象作为另一个类的成员变量的设计方式。classEngine{public:Engine(){/*...*/}~Engine(){/*...*/}};classCar{private:Engineengine;//Engine的构造函数和析构函数将被调用......
  • C++深拷贝和浅拷贝的区别
    C++深拷贝和浅拷贝的区别#include<iostream>#include<cstring>usingnamespacestd;classstudent{public:student(constchar*name,intage);//声明构造函数~student();//析构函数//如果没有定义拷贝构造函数,编译器就自动生成默认拷贝构造函数:浅拷贝......
  • java中的值传递和引用传递
    值传递:传递对象的一个副本,即使副本被改变,也不会影响源对象,因为值传递的时候,实际上是将实参的值复制一份给形参。引用传递:传递的并不是实际的对象,而是对象的引用,外部对引用对象的改变也会反映到源对象上,因为引用传递的时候,实际上是将实参的地址值复制一份给形参。说明:对象传......
  • 行李托运问题(c++实际问题专题1)
    大家好,小编今天给大家带来一个问题,这个问题出题方法也比较实用。先看一下题干: 这道题目其实分一下货物的类型就行了,<=10的算一类,>10的算一类,这样在分别算出就行,先算<=10的:if(n<=10)cout<<fixed<<setprecision(2)<<2.5;//注意,这里需要用fixed-setpresicion函数......