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指针类型的引用

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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;
}
复制代码

 

posted @   Q星星  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示