当前位置: 首页 > news >正文

C++基础知识学习记录—引用

1、引用的概念

概念:引用相当于给变量取个别名

对引用进行操作与直接操作变量相同,注意引用类型与变量类型一致

#include<iostream>
using namespace std;
int main(){int a=10;int& cite_a = a;//操作引用cite_a 与操作变量a完全一样cout << a << "======" << cite_a << endl;cout << &a << "======" << &cite_a << endl;a++;cout << a << "=======" << cite_a << endl;cite_a =900;cout << a << "======" << cite_a << endl;return 0;
}

2、引用的性质

1、成为一个变量的引用后,就不能称为其他变量的引用

2、引用必须初始化,并且不可以为NULL

3、当作为纯数字的引用时,需要加const修饰,代表其引用的数值不可修改

4、变量的引用如果使用const修饰,此时叫常引用,不能通过引用修改数值,但可以通过原变量修改数值

5、可以使指针指向引用的地址,相当于指向了原变量

6、可以对指针建立引用,此时引用相当于指针的别名

1、性质1:成为一个变量的引用后,就不能成为其他变量的引用 

#include<iostream>
using namespace std;
int main(){int a=10;int & cita_a=a;//引用的性质1:称为一个变量的引用后,就不能称为其他变量的引用int b=90;cite_a = b;//这里是把b的值赋值给了cite_acout << cite_a << "=====" << a << endl;cout << (&cite_a==&a) << "====" << (&cite_a==&b) << endl;// cout << (1==3) << endl;// &cite_a = b;  //错误// int& cite_a =b ;//错误 不允许再次称为其他变量的引用}

2、引用的性质2:引用必须初始化,并且不可以为NULL

#include<iostream>
using namespace std;
int main(){//引用的性质2:声明引用时,必须对其初始化,且不能初始化为NULLint c=90;//int& cite_c;  //报错//int& cite_c = NULL;//报错int& cite_c = c; cout << cite_c << endl;return 0;
}

3、引用的性质3:当作为纯数字的引用时,需要加const修饰,代表其引用的数值不可修改

#include<iostream>
using namespace std;
int main(){//引用的性质3:当作为纯数字引用时,需要加const修饰,代表其引用的数值不可更改// int& cite_a=90;//报错 未加constconst int& a = 3;cout << a << endl;// a++; //报错 引用的数值不可更改return 0;
}

4、引用的性质4:变量的引用如果使用const修饰,此时叫常引用,不能通过引用修改数值,但可以通过原变量修改数值

#include<iostream>
using namespace std;
int main(){//引用的性质4:使用const修饰的引用,叫常引用,常引用不可以通过引用修改数值,但是可以通过原始变量修改数值int a=500;const int& cite_a=a;cout << cite_a << "====" << a << endl;// cite_a++;//报错  const修饰 不能通过引用修改数值a++;//可以通过原始变量修改数值cout << cite_a << "====" << a << endl;return 0;
}

5、引用的性质5:可以使指针指向引用,相当于指向了原变量

#include<iostream>
using namespace std;
int main(){//引用的性质5:可以使指针指向引用,相当于指向了原变量int a=10;int& cite_a = a;int* c = &cite_a;  //c指向a的引用,相当于指向了acout << a << "==" << cite_a << "====" << *c << endl;cout << &a << "====" << &cite_a << "====" << c << endl;return 0;
}

6、引用的性质6:可以对指针建立引用,此时引用相当于指针的别名

#include<iostream>
using namespace std;
int main(){//引用的性质6:可以对指针建立引用,此时引用相当于指针的别名int a=10;int* b = &a;int*& cite_b = b;  //引用cite_b指向指针b,此时cite_b相当于指针b的别名cout << b << "====" << cite_b << "===" << &a << endl;cout << *b << "====" << *cite_b << "====" << a << endl;return 0;
}

引用和指针的区别

1、定义方式不同:引用是一个别名,通过使用&在变量定义时定义;指针是一种数据类型,存储了某一个变量的地址,通过使用*在变量定义时定义。

2、空值:引用在定义的时候必须初始化,并且不能引用空值;指针可以在定义的时候不初始化,也可以指向NULL。

3、可修改性:引用在初始化的时候绑定到一个变量上,不能再绑定到其他变量上;指针可以在任何时候修改指向的变量。

4、空引用和空指针:指针可以为空,但引用不允许为空

5、使用方式:引用在使用的时候可以直接使用,指针通过*,才能获取所指向变量的值

6、空间占用:引用不占用额外的空间,指针需要占用8字节的空间来存储地址

7、引用作为函数参数:引用作为函数参数,传递的是原对象的别名。函数内部对引用

的修改会影响到原对象;指针作为函数参数时,传递的是变量的地址,函数内部对

变量的修改也会影响带函数外部原来的变量。

3、引用的应用

C++中函数参数的传递有三种:

1、值传递:只是实参的拷贝,形参改变不会影响到实参

2、引用传递:不会产生拷贝副本,相当于操控变量本身,形参改变会影响到实参

3、指针传递:是把变量的地址传递给函数,函数内部对变量的修改也会影响带函数外部原来的变量。

 PS:引用传递可以提高参数的传递效率,因为引用传递不需要给形参开辟空间,也不需要为其赋值,可以使用其操作变量。如果只想提取到变量值。可以使用const修饰引用,避免不小心更改到变量的值。

#include <iostream>
using namespace std;void fun(int& num);
int main()
{int c = 100;fun(c);cout << c << endl;return 0;
}
//函数引用传参,可以改变函数外的值
void fun(int& num)
{num=num*2;cout << num << endl;
}

 

http://www.lryc.cn/news/534835.html

相关文章:

  • AWS Savings Plans 监控与分析工具使用指南
  • 【AI学习】关于 DeepSeek-R1的几个流程图
  • C++ ——从C到C++
  • 【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案
  • 前端学习之Flex布局
  • 游戏引擎学习第97天
  • Mysql中存储引擎各种介绍以及应用场景、优缺点
  • PHP 运算符
  • Vue全流程--Vue3.0与Vue2.0响应式原理对比
  • C语言学习笔记:子函数的调用实现各个位的累加和
  • 【大模型】本地部署DeepSeek-R1:8b大模型及搭建Open-WebUI交互页面
  • Python 调用 Stabilityai API在本地生成图像
  • Python3中异常处理:try-finally语句的示例
  • Lua限流器的3种写法
  • 基于 GEE 利用插值方法填补缺失影像
  • linux部署ollama+deepseek+dify
  • 在微服务中,如何使用feign在各个微服务中进行远程调用
  • Kafka中的KRaft算法
  • vue3 -- 集成 amap(高德地图)
  • 基于用户的协同过滤算法推荐
  • 4.python+flask+SQLAlchemy+达梦数据库
  • 神经网络常见激活函数 4-LeakyReLU函数
  • PHP盲盒商城系统源码 晒图+免签+短信验证+在线回收 thinkphp框架
  • 单例模式详解(Java)
  • 2025年度Python最新整理的免费股票数据API接口
  • 2.10学习总结
  • 原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 从Word里面用VBA调用NVIDIA的免费DeepSeekR1
  • 【SpringBoot篇】基于Redis分布式锁的 误删问题 和 原子性问题
  • 【JVM详解三】垃圾回收机制