欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++-引用

程序员文章站 2022-06-10 14:03:09
...

对一个数据可以使用引用,这个C++对C的一个重要扩充,引用是一种新的变量类型,它的作用是为一个变量起一个别名。

在声明一个引用型变量时,必须同时使之初始化,即声明它代表哪一个变量。

引用完成后,在它们所在的函数执行期间,该引用类型变量不能再作为其他变量的引用。

 

C++之所以增加引用类型,主要是把它作为函数参数,以扩充函数传递数据的功能。

引用的本质就是一个指针常量。  void *const 类型

 

证明:

C++-引用

C++-引用

下面的汇编代码说明了将a的地址传递给了b

一个实现:

void test(int &a) { //c++中的实现
	a = 5;
}
void test(int *a) { //c中的实现
	*a = 5;
}

C++中,在传递参数的时候,相当于实参的地址传递给形参a,使用a的时候相当于调用*a;这些工作都是C++编译器完成的。

 

当引用作为函数类型时,接收函数值的是引用,那么传递的就是地址,如果接收函数值的是变量,那么传递的就是值

C++-引用

C++-引用

test()返回值用变量接收:

C++-引用

C++-引用

test()返回值用引用接收:

C++-引用

分析:主函数执行 int b=test(); 被调函数返回引用,主调函数用变量接收,被调函数将变量a的值返回(从eax的变化的可以看出)

主调函数用引用接收,被调函数返回的是a的地址。

 

C++的指针的引用相当于C中的二级指针。//二级指针做输出

#include <iostream>
#pragma warning (disable:4996)
using namespace std;

void getString(char *&p) {
	p = (char *)malloc(100);
	strcpy(p, "hello world");
	puts(p);
	free(p);
}

int main() {
	char *p = NULL;
	getString(p);
	system("pause");
}

 

常引用:

C++-引用

int &a=2;//error   普通引用不能用常量初始化

C++对常引用的实现是:将2复制到一块内存空间中,然后将内存空间的地址传递给a

C++-引用

相关标签: 引用类型 C