学习目标:
掌握引用变量的用法及其本质
学习内容:
1.引用的概念
引用是已定义的变量的别名(另一个名称),两者用法完全一样。同类理解??typedef 是给类型起别名。
2.声明与定义
一、基本数据变量的引用
定义时就要初始化 ,不能再指向其他? ,? 引用变量的地址相同
//一个变量可多个引用
int a=12;
int &b=a;
int &c=b;
int &d=b;
//不能在指向其他 eg:
int x=10;
int y=20;
int &a=x;
int &a=y;
二、常量的引用
const int &a=10;
const char &c='x';
const float &f=12.123;
三、复合数据类型的引用
数组的引用?
//一维数组的引用
int arr[5];
int(&k)k[5]=arr;
//二维数组的引用
int arr1[3][4];
int(&a)[3][4]=arr1;
结构体的引用? 类型&引用名=结构体实例;
指针的引用:
int *p=NULL;
int* &a=p;
3.引用与函数
引用做函数参数值:
void fun1(int &x)
{
x=10;
cout<<x<<endl;
}
int main()
{
int a=20;
fun1(a);
cout<<a<<endll
return 0;
} //输出 x=10;a=10;
void fun2(int x)
{
x=10;
cout<<x<<endl;
}
int main()
{
int a=20;
fun2(a);
cout<<a<<endl;
return 0;
} //输出 x=10;a=20;
4.引用与指针的区别
一、引用声明时就要初始化,指针不用? eg :int *p=NULL;
二、引用不能指向其他变量(int &a=b,int &a=c),指针可以任意指向
三、引用不占用空间,指针会占用空间
四、引用效率更高
五、引用更加安全,指针可以偏移
六、指针更加灵活,直接操作地址,指针 c/c++都适用 , 引用只适用于c++
5.&的三种作用
声明变量时有& 表示引用,eg:int & a=b;
变量前直接加& 表示取地址变量,eg : int *p=&a;
数&数,表示位与运算;
|