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  */
}

运行结果如下:

到此这篇关于C++变量引用的概念介绍的文章就介绍到这了,更多相关C++变量引用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++中结构体的类型定义和初始化以及变量引用

    C++结构体类型的定义和初始化 有时需要将不同类型的数据组合成一个有机的整体,以供用户方便地使用.这些组合在一个整体中的数据是互相联系的.例如,一个学生的学号.姓名.性别.年龄.成绩.家庭地址等项,都是这个学生的属性,见图 可以看到学号(num).姓名(name).性别(sex).年龄(age).成绩(score ).地址(addr)是与姓名为"Li Fun"的学生有关的.如果在程序中将num,name,sex,age,score,addr分别定义为互相独立的变量,就难以反映出它们之间

  • C++ const引用、临时变量 引用参数详解

    C++引用-临时变量.引用参数和const引用 如果实参与引用参数不匹配,C++将生成临时变量.如果引用参数是const,则编译器在下面两种情况下生成临时变量: 实参类型是正确的,但不是左值 实参类型不正确,但可以转换为正确的类型 左值参数是可被引用的数据对象,例如,变量.数组元素.结构成员.引用和被解除引用的指针都是左值,非左值包括字面常量和包含多项式的表达式.定义一个函数 Double refcube(const double& ra) { Returnra*ra*ra; } double

  • C++类中变量也可以是引用的代码实例

    C++类中变量也可以是引用哈------要用初始化列表来初始化(因为C++引用一旦绑定,就无法更换,有点类似const) #include <iostream> using namespace std; class A { public: int &x; int &y; A(int &tmpX, int &tmpY):x(tmpX), y(tmpY){} }; int main() { int tmpX = 1; int tmpY = 2; A a(tmpX,

  • c++中临时变量不能作为非const的引用参数的方法

    试看下面的代码: #include <iostream> using namespace std; void f(int &a) { cout << "f(" << a << ") is being called" << endl; } void g(const int &a) { cout << "g(" << a << "

  • 简单介绍C++中变量的引用

    什么是变量的引用 对一个数据可以使用"引用(reference)",这是C++对C的一个重要扩充,引用是一种新的变量类型,它的作用是为一个变量起一个别名.假如有一个变量a,想给它起一个别名b,可以这样写: int a; //定义a是整型变量 int &b=a; //声明b是a的引用 以上语句声明了b是a的引用,即b是a的别名.经过这样的声明后,a或b的作用相同,都代表同一变量. 注意: 在上述声明中,&是引用声明符,并不代表地址.不要理解为"把a的值赋给b的地

  • C++变量引用的概念介绍

    本篇介绍的变量引用与之前介绍的指针不是同一概念,它们有本质的区分: 1)不存在空引用.引用必须连接到一块合法的内存. 2)一旦引用被初始化为一个对象,就不能被指向到另一个对象.指针可以在任何时候指向到另一个对象. 3)引用必须在创建时被初始化.指针可以在任何时间被初始化. 下面代码介绍其应用场景,供参考 /* * Author:W: * 变量引用:是已定义声明的变量的"别名" * 引用与指针的区别: * 1)不存在空引用.引用必须连接到一块合法的内存. * 2)一旦引用被初始化为一个对

  • php 变量引用与变量销毁机制详细介绍

    php 变量引用与变量销毁机制 在php中,符号"&"表示引用. 1.看看不引用的情况是这样子: $a = "hello world";//定义一个变量,下面赋值给$b $b = $a;//这一步没有在$a之前加符号&,像这样子"$b= & $a".没有加&,实际上原理是会将变量$a复制拷贝一份,也就是内存中重新申请一个地址存储变量$b了 ps:在php中,使用"="直接赋值,其实就是拷贝一份右

  • C++详细分析讲解引用的概念与使用

    目录 1.引用的概念 2.引用的格式 3.引用的特性 4.取别名原则 5.引用的使用场景 做参数 做返回值 int&Count()的讲解 传值传引用效率比较 6.引用和指针的不同点 1.引用的概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间. 2.引用的格式 类型 & 引用变量名 ( 对象名 ) = 引用实体: 举例如下: 注意:引用类型必须和引用实体是同种类型的 3.引用的特性 (1). 引用在 定义时必须初

  • PHP中变量引用与变量销毁机制分析

    本文实例分析了PHP中变量引用与变量销毁机制.分享给大家供大家参考.具体分析如下: 变量是php中一个非常重要的类型了,我们的有数据都通过变量或常量来进行操作,下文来看看变量引用与变量销毁. 在php中,符号"&"表示引用. 1.看看不引用的情况是这样子: 复制代码 代码如下: $a  = "hello world";//定义一个变量,下面赋值给$b $b = $a;//这一步没有在$a之前加符号&,像这样子"$b= & $a&qu

  • PHP 引用的概念

    什么是引用? 在 PHP 中引用意味着用不同的名字访问同一个变量内容.它不是C的指针,保存的并不是内存地址,无法进行指针运算.引用只是符号表的别名.就像 Unix 系统中的硬链接, Windows 系统中的快捷方式. 上面是官方手册中的原文,怎么说呢,引用其实和我们印象中的C里面的指针并不是相同的概念.指针是针对真实内存的操作,引用是针对指向这个内存的符号表的操作.还是从操作系统的快捷方式来说,快捷方式是可以删的,这就是PHP的引用.而C不仅删了快捷方式,还把原文件也给删了,这就是C的指针操作.

  • Python中的引用与copy介绍

    目录 Python中的引用和copy 1.引用整型数据及列表 2.传递引用 3.copy模块中的copy()和deepcopy() Python中的引用和copy 1.引用整型数据及列表 这里以整型数据类型及列表为例 对于赋值字符串.整型.元组等不可更改数据的变量,其保存的仅是值,改变新变量中的值并不会影响原来变量中的值 origin = 1 new = origin print("new = ",new) new = 2 print("origin = ",ori

  • Python中的变量,参数和模块介绍

    目录 前言 1 变量 2 参数 3 模块 前言 简单的使用python函数之后,我们在日常开发中还需要经常使用的三个地方,分别是变量.参数和模块.其中,Python的变量类型已经在语法介绍中做了简单的使用描述.在本篇文章中,会更加强调变量的作用域,并分别介绍参数和模块的使用. 1 变量 首先,在python中,变量是存储在内存的值,程序在执行创建变量时会在内存中创建一个空间,并且根据变量的数据类型,python解析器会分配指定内存.变量标记或者指向一个值. 示例如下:与剧中的 color 就是一

  • Linux环境变量和进程地址空间介绍

    目录 Linux环境变量和进程地址空间 通过代码获取环境变量 进程地址空间 关于为什么是虚拟地址,而不是物理地址? Linux环境变量和进程地址空间 //查看进程pid和父进程 [dy@VM-12-10-centos jincheng_12_5]$ ps ajx | head -1 && ps axj | grep 3669470 PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 3669469 3669470 3669470 366943

  • MySQL事务视图索引备份和恢复概念介绍

    目录 一.事务 二.事务的特性 三.MySQL事务处理 四.视图 五.管理视图 六.索引 七.常见索引类型 八.管理索引 九,创建索引的指导原则 十,优化SQL语句的意识 一.事务 事务(TRANSACTION)是一种机制.一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库操作命令要么都执行,要么都不执行. 事务是一个不可分割的工作逻辑单元 . 二.事务的特性 事务必须具备以下四个属性,简称ACID 属性 原子性(Atomicity)

  • Python引用传值概念与用法实例小结

    本文实例讲述了Python引用传值概念与用法.分享给大家供大家参考,具体如下: Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数内如需改变参数的值,则相当于重新新建了一个对象. # 添加了一个string类型的元素添加到末尾 def ChangeList(lis): lis.append('hello i am the addone') prin

随机推荐