引用 (C++; 引用知识点总结)

在这里插入图片描述
在这里插入图片描述

在这里插入代码片:
#include<iostream>
using namespace std;
// 引用 : 给变量起别名
//语法 : 数据类型 &别名 = 原名

int main()
{
  int a = 20;
  int &b = a;
   b = 30;
   cout << a << endl;
   cout << b << endl;

  const int c = 20;
  const int &d = c;   //需要相同的const 修饰
  cout << c << endl;
  cout << d << endl;

   //1.引用必须要初始化
   //int &b; 错误的
   //2.引用一旦初始化,就不可以修改


//  int &k;错

  int i = 60;
  int &k = i;
   cout << k << endl;
  int j = 60;
 // int &k = j;错误
   cout << k << endl;

}

2.函数与引用:
在这里插入图片描述

在这里插入代码片:
#include<iostream>
using namespace std;

void swap1(int a,int b) //值传递,形参并不会使实参的值发生改变
{
  int temp = a;
  a = b;
  b = temp;

}

void swap2(int *a,int *b) //地址传递,形参会使实参的值发生改变(并返回原地址)
{
  int temp = *a;
  *a = *b;
  *b = temp;

}

void swap3(int &a,int &b) //引用传递,形参会使实参的值发生改变
{
 int temp = a;
  a = b;
  b = temp;

}

void main()
{
   int a = 10;
   int b = 20;

   swap3(a,b);
   cout << "a= " << a<< endl;
   cout << "b= " << b<< endl;

}

3.引用做函数的返回值:
在这里插入图片描述

在这里插入代码片:
#include<iostream>
using namespace std;

//引用做函数的返回值
//1.不要返回局部变量的引用
int & test1()
{
   int a = 10;  //局部变量放在栈区,运行完,系统自动释放
   return a;

}

int & test2()
{
  static  int a = 10;  //静态变量,存放在全局区,全局区上的数据在结束后系统释放
   return a;

}

void main()
{
   int &ref = test1();
   cout << "ref " << ref<< endl;  //第一次结果正确,是因为编译器做出了保留
   cout << "ref " <<ref<< endl;  //第二次结果错误,是因为编译器已经将a的内存释放了

   int &ref2 = test2();
    cout << "ref2 " << ref2<< endl;
	cout << "ref2 " << ref2<< endl;

    test2() = 1000;  //如果函数的返回值是引用,这个函数调用的可以作为左值(必须静态变量在函数中)
	cout << "ref2 " << ref2<< endl;
	cout << "ref2 " << ref2<< endl;

}

4.引用的本质
本质:就是一个指针常量
在这里插入图片描述

5.常量引用
在这里插入图片描述

在这里插入代码片:
#include<iostream>
using namespace std;

//常量引用
//使用场景,用来修饰形参,防止误操作

void showValue(const int &a)
{
	//a = 100;加了const后不能修改
	cout << a << endl;
}


void main()
{
//	int a = 10;
//	int &ref = 10; 引用必须引一块合法的内存空间
	const int & ref = 20;
	//加上const之后,编译器将代码修改 int temp =10; const int & ref = temp;
   //&与*是一样的
	//ref =10;加入const 之后 变为只读 ,不可以修改
	int a = 10;
	showValue(a);
	cout << a << endl;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The endeavor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值