C++变量引用

本篇介绍的变量引用与之前介绍的指针不是同一概念,它们有本质的区分:

1)不存在空引用。引用必须连接到一块合法的内存。

2)一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。

3)引用必须在创建时被初始化。指针可以在任何时间被初始化。

下面代码介绍其应用场景,供参考

/*
* Author:W;
* 变量引用:是已定义声明的变量的“别名”
* 引用与指针的区别:
* 1)不存在空引用。引用必须连接到一块合法的内存。
* 2)一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
* 3)引用必须在创建时被初始化。指针可以在任何时间被初始化。
*/

//引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】
#include <iostream>

//命名空间使用
using namespace std;
//交换函数声明
void swap(int& a, int& b);
//设置数组特定位置的值
int& setArrValue(int* array, int index);

//main程序执行入口函数
int main()
{
	//声明变量
	int a = 3;
	//声明引用变量
	int& b = a;

	cout << "=====引用变量=====" << endl;
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;

	cout << "=====引用变量作为函数参数=====" << endl;
	int c = 4;
	int d = 10;
	cout << "交换之前 :c = " << c << " d = " << d << endl;
	swap(c, d);
	cout << "交换之后 :c = " << c << " d = " << d << endl;

	cout << "=====函数返回引用=====" << endl;
	//【返回一个引用时,要注意被引用的对象不能超出作用域。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。】
	int arr[3] = { 1,4,7 };
	cout << "改变前的值" << endl;
	for (int i = 0; i < 3; i++)
	{
		cout << "arr[" << i << "] = " << arr[i] << endl;
	}
	setArrValue(arr,1) = 5;
	cout << "改变后的值" << endl;
	for (int i = 0; i < 3; i++)
	{
		cout << "arr[" << i << "] = " << arr[i] << endl;
	}
}

//改变数组特定位置的值
int& setArrValue(int* array,int index)
{
	int& ref = array[index];

	return ref;
}

/// <summary>
/// 交换函数声明
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
void swap(int& a, int& b)
{
	int temp;
	temp = a; /* 保存地址 a 的值 */
	a = b;    /* 把 b 赋值给 a */
	b = temp; /* 把 a 赋值给 b  */
}

运行结果如下:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Data菌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值