【C++基础05】引用的基础
2016-01-13 10:27
330 查看
变量名实质上是一段连续存储空间的别名,是一个标号(门牌号)
程序中通过变量来申请并命名内存空间
通过变量的名字可以使用存储空间
属于c++编译器对c的扩展 不能用c编译器的角度思考引用
普通引用必须初始化
复杂数据类型引用做函数参数:
普通引用在声明时必须用其它的变量进行初始化,
引用作为函数参数声明时不进行初始化
程序中通过变量来申请并命名内存空间
通过变量的名字可以使用存储空间
属于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; }
普通引用在声明时必须用其它的变量进行初始化,
引用作为函数参数声明时不进行初始化