引用
某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;
#include <iostream>
#include <Windows.h>
using namespace std;
int main(void){
int a=10;
printf("a=%d\n",a);
int &b=a; //a的别名
printf("b=%d\n",b);
a=100;
printf("a=%d b=%d\n",a,b);
b=1000;
printf("a=%d b=%d\n",a,b);
system("pause");
return 0;
}
以上代码可以看出,引用变量其实就是一个变量的别名.这就好比你有自己的大名,也有自己的小名,还有自己的外号一样,喊你的大名也是在叫你,喊你的小名也是在叫你,喊你的外号也是在叫你.修改引用变量实际上就修改了目标变量.
说明:
(1)&在此不是求地址运算,而是起标识作用。
(2)类型标识符是指目标变量的类型。
(3)声明引用时,必须同时对其进行初始化。
(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
引用占不占内存空间:
用struct结构类型来测试.
#include <iostream>
#include <Windows.h>
using namespace std;
struct text{
int &a;
int &b;
};
int main(void){
printf("int的大小为:%d 结构体text的大小为:%d\n",sizeof(int),sizeof(text)); //sizeof作用就是返回一个对象或者类型所占的内存字节数
system("pause");
return 0;
}
看的出来其实是占内存空间的
引用和指针的关系.在C++编译器内部,实现引用的方法其实是指针常量,也就是int* const b;
在使用b时也自动帮你变成了*b.
感谢: