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

引用(个人学习笔记黑马学习)

1、引用的基本语法

#include <iostream>
using namespace std;int main() {int a = 10;//创建引用int& b = a;cout << "a = " << a << endl;cout << "b = " << b << endl;b = 100;cout << "a = " << a << endl;cout << "b = " << b << endl;system("pause");return 0;
}


2、引用的注意事项

#include <iostream>
using namespace std;int main() {int a = 10;//1、引用必须初始化//int& b; 错,必须初始化int& b = a;//2、引用在初始化后,不可以改变int c = 20;b = c;//赋值操作,而不是更改引用cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;system("pause");return 0;
}


3、引用做函数参数

#include <iostream>
using namespace std;//交换函数//1、值传递void mySwap01(int a, int b) {int temp = a;a = b;b = temp;/*cout << "swap01 a = " << a << endl;cout << "swap01 b = " << b << endl;*/
}//2、地址传递void mySwap02(int* a,int* b) {int temp = *a;*a = *b;*b = temp;}//3、引用传递void mySwap03(int &a,int &b) {int temp = a;a = b;b = temp;}int main() {int a = 10;int b = 20;//mySwap01(a, b);//值传递,形参不会修饰实参//mySwap02(&a, &b);地址传递,形参会修饰实参mySwap03(a, b);//引用传递,形参会修饰实参cout << "a = " << a << endl;cout << "b = " << b << endl;system("pause");return 0;
}


4、引用做函数的返回值

#include <iostream>
using namespace std;//引用做函数的返回值
//1、不要返回局部变量的引用
int& test01() {int a = 10;//局部变量存放在四区中的栈区return a;
}//2、函数的调用可以作为左值
int& test02() {static int a = 10;//静态变量 存放在全局区,全局区的数据存放在程序结束后系统释放return a;
}int main() {//int& ref = test01();//cout << "ref = " << ref << endl;//第一次结果正确,是因为编译器做了保留//cout << "ref = " << ref << endl;//第二次结果错误,是因为a的内存已经释放int& ref2 = test02();cout << "ref2 = " << ref2 << endl;cout << "ref2 = " << ref2 << endl;test02() = 1000;//如果函数的返回值是引用,这个函数调用可以作为左值cout << "ref2 = " << ref2 << endl;cout << "ref2 = " << ref2 << endl;system("pause");return 0;
}


5、引用的本质

引用的本质是指针常量

#include <iostream>
using namespace std;void func(int& ref) {ref = 100;//red是引用,转化为*ref=100
}int main() {int a = 10;//自动转换成 int* const ref=&a;  指针常量是指针指向不可改变,int& ref = a;ref = 20;//内部发现ref是引用,自动帮我们转换为:*ref=20;cout << "a:" << a << endl;cout << "ref:" << ref << endl;func(a);system("pause");return 0;
}


6、常量引用

#include <iostream>
using namespace std;//打印数据函数
void showValue(const int& val) {//val = 1000;cout << "val = " << val << endl;
}int main() {//常量引用//使用场景:用来修饰形参,防止误操作int a = 100;//int& ref = 10;引用必须引一块合肥的内存空间加上const之后 编译器将代码修改  int temp=10; const int& ref=temp;//const int& ref = 10;//ref = 20;//报错,加入const之后变为只读,不可以修改showValue(a);cout << "a = " << a << endl;system("pause");return 0;
}

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

相关文章:

  • 卷积神经网络实现运动鞋识别 - P5
  • C#安装“Windows 窗体应用(.NET Framework)”
  • SQL高阶语句
  • 【交换机】如何通过Web方式登陆交换机
  • Flink CDC学习笔记
  • NEOVIM学习笔记
  • Docker三剑客之docker-compose
  • 单调队列
  • effective c++ 笔记
  • 【送书活动】深入浅出SSD:固态存储核心技术、原理与实战
  • GaussDB数据库SQL系列-行列转换
  • 美国陆军网络司令部利用人工智能增强网络攻防和作战决策能力
  • Notion团队协作魔法:如何玩转数字工作空间?
  • 视频云存储/安防监控/AI视频智能分析平台新功能:人员倒地检测详解
  • 解决RabbitMQ报错Stats in management UI are disabled on this node
  • 【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素
  • 数据库约束
  • Unity实现MQTT服务器
  • Linux(centos) 下 Mysql 环境安装
  • 决策树(Decision Tree)
  • 解决 PaddleClas 下载预训练模型报错 ModuleNotFoundError No module named ‘ppcls‘ 的问题
  • 视觉化洞察:为什么我们需要数据可视化?
  • C语言函数概述——拜佛代码
  • 防火墙日志分析工具
  • Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合
  • Django系列之日志配置
  • 四轴飞行器传感器(SimulinkMatlab代码实现)
  • 学习 使用pandas库 DataFrame 使用
  • C++字符串详解
  • vant2 van-calendar组件增加清除按钮和确定按钮