a) 在C++中新增加了引用的概念
b) 引用可以看作一个已定义变量的别名
c) 引用的语法:Type& name = var;
d)引用做函数参数那?(引用作为函数参数声明时不进行初始化)
#include <iostream>
using namespace std;
struct Teacher
{
int &a;
char &b;
};
int main()
{
int a = 10;//编译器分配4个字节内存空间 a为内存空间的别名
int &b = a;//b就a的别名
printf("&b:%d\n",&b);//b有自己的内存空间
printf("b:%d\n",b);//10
a = 11;//直接赋值
{
int *p =&a;
*p = 12;//通过指针间接赋值
printf("a:%d\n",a);//12
}
b = 14;//通过b间接赋值
printf("a:%d\n",a);//14
{
char s ='c';
char &c = s ;
printf("&s:%d\n",&s);//
printf("&c:%d\n",&c);// s和c的地址一样 说明引用是对同一块地址空间的门牌号
printf("sizeof(Teacher):%d\n",sizeof(Teacher));//8
/*
1) 引用在C++中的内部实现是一个常指针
Type& name Type* const name
2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。*/
}
system("pause");
return 0;
}