C++核心编程 2 引用
2021/8/6 12:36:09
本文主要是介绍C++核心编程 2 引用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
引用的基本使用
作用:给变量起别名 ,语法:数据类型 & 别名 = 原名
注意:引用必须初始化,且初始化之后,就不可更改、
引用做函数参数
作用:函数传参时,可以利用引用的技术让形参修饰实参
优点:可以简化指针修改实参
实例:
#include<iostream> using namespace std; //交换函数 //1、值传递 void Swap1(int a, int b) { int temp = a; a = b; b = temp; //cout << "Swap1 a=" << a << " " << "Swap1 b=" << b << endl; //值传递 } //2、地址传递 void Swap2(int * a, int * b) { int temp = *a; * a = * b; * b = temp; //cout << "Swap2 a=" << *a << " " << "Swap2 b=" << *b << endl; //地址传递 } //3、引用传递 void Swap3(int &a , int &b) { int temp = a; a = b; b = temp; cout << "Swap3 a=" << a << " " << "Swap3 b=" << b << endl; //引用传递 } int main() { int a = 10; int b = 20; //Swap1(a, b); //值传递,形参不会修饰实参 //cout << "a=" << a << " " << "b=" << b << endl; //值传递打印:a=10,b=20 //Swap2(&a, &b); //地址传递,形参会修饰实参 //cout << "a=" << a << " " << "b=" << b << endl; //地址传递打印:a=20,b=10 Swap3(a, b); //引用传递,形参会修饰实参 cout << "a=" << a << " " << "b=" << b << endl; //引用传递打印:a=20,b=10 system("pause"); return 0; }
总结:通过引用参数产生的效果同地址传递是一样的,引用的语法更清晰简单
引用做函数返回值
作用:引用是可以作为函数的返回值存在的。用法:函数调用作为左值
注意:不要返回局部变量引用
实例:
#include<iostream> using namespace std; //引用做函数的返回值 //1、不要返回局部变量的引用 int& test1() { int a = 10; //局部变量存放在四区中的 栈区 return a; } //2、函数的调用可以作为左值 int& test2() { static int a = 10; //加上关键字static ,局部变量a就变成了静态变量;静态变量存放在全局区,全局区的数据在程序结束后由系统释放 return a; } int main() { //int &ref = test1(); //cout << "ref=" << ref << endl; //第一次结果正确,是因为编译器做了一次保留 //cout << "ref=" << ref << endl; //第二次结果错误,是因为 栈区 中存放的 局部变量 a 的内存已经被释放 int& ref = test2(); cout << "ref=" << ref << endl; //ref=10 cout << "ref=" << ref << endl; //ref=10 test2() = 1000; //如果函数的返回值是引用,函数的调用可以作为左值 cout << "ref=" << ref << endl; //ref=1000 cout << "ref=" << ref << endl; //ref=1000 system("pause"); return 0; }
引用的本质:
引用的本质在C++内部实现是一个指针常量
实例:
结论:C++推荐使用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了
常量引用:
作用:常量引用主要是用来修饰形参,防止误操作
在函数形参列表中,可以加const修饰形参,防止形参改变实参
实例:
#include<iostream> using namespace std; //常量引用 //主要是用来修饰形参,防止误操作 void ShowVal(const int &val) { //val = 1000; cout << "val=" << val << endl; } int main() { //int a = 10; //int& ref = 10; //引用必须引一块合法的内存空间 const int & ref = 10; //加上const后 编译器将代码修改 int temp = 10; int & ref = temp; //ref = 20; //加入const之后 变为只读,不可修改 int a = 100; ShowVal(a); cout << "a=" << a << endl; system("pause"); return 0; }
这篇关于C++核心编程 2 引用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享