变量名实质上是一段连续存储空间的别名,是一个标号(门牌号)
程序中通过变量来申请并命名内存空间
通过变量的名字可以使用存储空间
属于c++编译器对c的扩展 不能用c编译器的角度思考引用
void main()
{
int a = 10;
//引用的语法:Type&name=var;
//b就是a 写b就相当于写a
int&b = a; //int* const b=&a; 指针变量为常量值 意思就是不能再改变指针的指向 但是可以改变指针所指向地址的值
//相当于把a 改成了100 b就是a a就是b
b = 100;//*b=100;
cout << "hello!" << endl;
system("pause");
return;
}
普通引用必须初始化
void swap(int a,int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
//改变指针所指地址上的值
void swap02(int *a, int *b)
{
int tmp;
tmp = *a;
*a =*b;
*b = tmp;
}
//引用左函数参数的时候 声明不需要初始化 没法初始化
void swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
void main93()
{
int a = 10;
int &b = a;
//int &c; //普通引用必须初始化
int x = 10, y = 30;
cout << x<<" "<<y<<endl;
cout << "hello!" << endl;
system("pause");
return;
}
struct Teacher
{
char name[64];
int age;
};
void printfT01(Teacher pT)
{
cout << pT.name<< endl;
cout << pT.age << endl;
}
void printfT02(Teacher*pT)
{
cout << pT->name<<endl;
cout << pT->age << endl;
}
void printfT03(Teacher&pT)
{
cout << pT.name << endl;
cout << pT.age << endl;
}
void main()
{
Teacher t1;
t1.age = 35;
t1.name[64] = {'a'};
printfT01(t1);
printfT02(&t1); //pT是t1的别名
printfT03(t1); //pT=t1;
cout << "hello!" << endl;
system("pause");
return;
}
普通引用在声明时必须用其它的变量进行初始化,
引用作为函数参数声明时不进行初始化
引用的意义: