C++-引用
程序员文章站
2022-06-10 14:03:09
...
对一个数据可以使用引用,这个C++对C的一个重要扩充,引用是一种新的变量类型,它的作用是为一个变量起一个别名。
在声明一个引用型变量时,必须同时使之初始化,即声明它代表哪一个变量。
引用完成后,在它们所在的函数执行期间,该引用类型变量不能再作为其他变量的引用。
C++之所以增加引用类型,主要是把它作为函数参数,以扩充函数传递数据的功能。
引用的本质就是一个指针常量。 void *const 类型
证明:
下面的汇编代码说明了将a的地址传递给了b
一个实现:
void test(int &a) { //c++中的实现
a = 5;
}
void test(int *a) { //c中的实现
*a = 5;
}
C++中,在传递参数的时候,相当于实参的地址传递给形参a,使用a的时候相当于调用*a;这些工作都是C++编译器完成的。
当引用作为函数类型时,接收函数值的是引用,那么传递的就是地址,如果接收函数值的是变量,那么传递的就是值
test()返回值用变量接收:
test()返回值用引用接收:
分析:主函数执行 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");
}
常引用:
int &a=2;//error 普通引用不能用常量初始化
C++对常引用的实现是:将2复制到一块内存空间中,然后将内存空间的地址传递给a
上一篇: 让我们来做一个属于自己的浏览器主页吧!
下一篇: session使用实例