c++核心编程day2 - 引用
c核心编程day2工具vs2026课程【黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难】2 引用2.1 引用的基本使用作用给变量起别名语法数据类型 别名 原名程序示例#includeiostreamusingnamespacestd;#includestringintmain(){// 引用的基本语法inta10;// 创建引用intba;couta aendl;coutb bendl;b100;couta aendl;coutb bendl;system(pause);return0;}2.2 引用的注意事项引用必须初始化int a;×int a b;√引用在初始化后不可以改变int a b;a c;×a c; // 赋值操作是可以的a和b都会等于c程序示例#includeiostreamusingnamespacestd;#includestringintmain(){inta10;intba;intc20;bc;//可以进行赋值操作但是不可b ccouta aendl;coutb bendl;coutc cendl;system(pause);return0;}2.3 引用作函数参数作用函数传参时可以利用引用的技术让形参修饰实参优点可以简化指针修改实参地址传递程序示例#includeiostreamusingnamespacestd;#includestring// 交换函数// 1. 值传递voidswap01(inta,intb){inttempa;ab;btemp;coutswap01 a aendl;coutswap01 b bendl;}// 2. 地址传递voidswap02(int*a,int*b){inttemp*a;*a*b;*btemp;coutswap02 a *aendl;coutswap02 b *bendl;}// 3. 引用传递voidswap03(inta,intb){inttempa;ab;btemp;coutswap03 a aendl;coutswap03 b bendl;}intmain(){inta10;intb20;swap01(a,b);couta aendl;coutb bendl;swap02(a,b);couta aendl;coutb bendl;swap03(a,b);// 引用传递形参也会修饰实参couta aendl;coutb bendl;system(pause);return0;}2.4 引用作函数返回值不能返回局部变量的引用函数的调用可以作为左值程序示例#includeiostreamusingnamespacestd;#includestring// 引用作函数的返回值inttest01(){inta10;// 局部变量存放在栈区// 如果return a; 调用函数后第一次使用该值时是正确的是因为编译器做了保留但是后续a的内存会被释放所以不会获取真实的值staticintb10;//静态变量存放在全局区全局区上的数据在程序结束后由系统释放returnb;}intmain(){intreftest01();coutref refendl;coutref refendl;// 如果函数作左值那么必须返回引用test01()1000;// 等效于b 1000即ref 1000coutref refendl;coutref refendl;system(pause);return0;}2.5 引用的本质引用的本质在c内部实现是一个指针常量指针的指向是不可以修改的指针指向的值是可以修改的int ref a; // 即 int* const ref a;ref 10; // 即 *ref 10;2.6 常量引用常量引用主要用于修饰形参防止误操作在函数形参列表中加const修饰形参即常量引用防止形参改变实参程序示例#includeiostreamusingnamespacestd;#includestringvoidshow01(intval){val1000;coutval valendl;}voidshow02(constintval){// val 200; 不可以修改coutval valendl;}intmain(){// 引用必须引用一块合法的内存空间intb a;√ intb 10;×// 但是加上const就可以constintref10;// 编译器会自动将代码修改为 int temp 10; const int ref temp;// 此时ref也不可以被修改inta100;show01(a);show02(a);system(pause);return0;}