C++ 引用

引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。

C++ 引用 vs 指针

引用很容易与指针混淆,它们之间有三个主要的不同:

  • 不存在空引用。引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化。指针可以在任何时间被初始化   

 

引用通常用于函数参数列表和函数返回值。下面列出了 C++ 程序员必须清楚的两个与 C++ 引用相关的重要概念:

1、C++ 支持把引用作为参数传给函数,这比传一般的参数更安全。

#include <iostream>

using namespace std;

void swap(int & a,int &b){
	int temp = 0;
	temp = a;
	a = b;
	b = temp;
}
void main(){
	int a = 300;
	int b = 22;
	swap(a,b);
	
	cout << "a = " << a << " b = " << b << endl;
	system("pause");
}

当引用作为函数参数传递的时候,编译器会替我们将实参取地址空间给引用,引用就是变量的一个别名 他也指向变量内存 有点像 Linux 里面的软链接,引用做函数参数的时候没有出栈入栈操作 

2、把引用作为返回值  可以从 C++ 函数中返回引用,就像返回其他数据类型一样。

double vals[] = { 10.1, 12.6, 33.1, 24.1, 50.0 };
double & setValues(int i){
	return vals[i];   // 返回val 第 i 个元素的引用引用
}
void main(){
	#if 0
	int a = 300;
	int b = 22;
	swap(a,b);
	cout << "a = " << a << " b = " << b << endl;
	#endif
	
	setValues(1) = 20.23; //修改vals 第二个元素
	
	for(int i = 0;i< sizeof(vals) / sizeof(double);i++){
	   cout << "vals[" << i << "] = ";
       cout << vals[i] << endl;
	}
	system("pause");
}

(1)以引用返回函数值,定义函数时需要在函数名前加 &

(2)用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。

3、const 引用

const int a = 20; //如果想对一个常量进行引用 必须用一个const 引用
const int &re = a;

int b = 20;
const int &c = b; //如果一个普通变量用一个 const引用接收是可以的

 

本博客所有文章如无特别注明均为原创。作者:odaycaogen复制或转载请以超链接形式注明转自 123``blog
原文地址《C++ 引用

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)