引用

引用(reference)

引用是C++对c的扩充,引用是一种新的变量类型,它的作用就是给变量起一个别名。

额外的话题:
堆:malloc创建空间,空间是没有名字的,要使用这个空间需要用指针。
栈:空间有名字。
数据段:有的没名字如字符串常量,有的有名字如全局变量。
所以要使用内存空间两个方法,一个使用名字,一个使用指针。

在这里插入图片描述

= 号前面的是引用符, =号后面的是取地址符。99.5%都对。
图中&就是引用符,这样a的别名就是b,也就是a就是b,b就是a。

引用类型变量不会开辟空间。

例子

#include <iostream>
using namespace std;

void f1() {
	int a = 20;
	int &b = a;//创建引用类型变量时,要立刻 "赋值"
	int c = 100;
	b = c;
	cout<<b<<endl;//100
	cout<<a<<endl;//100
	cout<<&a<<endl;//0xbfbd393c
	cout<<&b<<endl;//0xbfbd393c
}

void f2(int *p) {
	*p = 21;
}

void f3(int &r) {//int &r = age
	r = 22; //age=22
}

/**
 * (1)引用是变量的别名, 不会再开辟空间
 * (2)引用在实计开发中,只使用于函数的形式参数,就类似于f3()。
 * (3)比喻:引用是一种受限指针,引用能做的事指针都能做,而指针能做事引用不一定能用。
 * (4)引用的底层实现在多数编译器中也是指针.但在上层上当作没开辟空间,
 */

int main() {
//	f1();

	int age = 20;
	//调用函数,让age的值改变为21
	f2(&age);
	cout<<"age="<<age<<endl;//age=21
	//调用函数,让age的值改变为22; 但是不能使用指针

	f3(age);
	cout<<"age="<<age<<endl;//age=22
	return 0;
}

为什么要起个别名,而不直接就用它原来的名字,这不搞复杂了吗?
看上面的代码,如果让age从20变为21,调用函数的话(f2),C中可以用指针.
而当不用指针的时候,C++就可以用引用,f3这个函数。

从功能上说,两种都是一样的。
但从内存分配上来说,引用就会快一些,它不会额外的开辟空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值