1.引用和指针的区别
引用只是变量的别名,不需要分配内存空间
指针是一个实体,需要分配内存空间
引用在定义的时候必须进行初始化,并且不能够被改变
指针在定义的时候不一定要初始化,可以在任意时间被初始化,并且指向的空间可变
引用不存在多级引用,只能有一级引用
指针有多级指针(例如二级指针:指向指针的指针)
当进行自增运算时:
引用的变量值加一
指针是指向下一个空间
sizeof 引用得到的是所指向的变量(对象)的大小
sizeof 指针得到的是指针本身的大小
引用访问一个变量是直接访问
指针访问一个变量是间接访问
传引用的实质是传地址,传递的是变量的地址
传指针的实质是传值,传递的值是指针的地址
一旦引用被初始化为一个对象,就不能被指向到另一个对象
指针可以在任何时候指向到另一个对象
不存在空引用 引用必须连接到一块合法的内存
存在空指针
相关基础知识:
(1)引用举例
声明一个变量i
int i = 1;
为i声明引用变量
int& y = i;
& 读作引用。此声明可以读作 "y 是一个初始化为 i 的整型引用"
(2)引用用法
引用作为参数:C++支持把引用作为参数传给函数,这比一般的参数更安全
引用作为返回值:可以从C++函数中返回引用,就像返回其他数据类型一样
(3)指针举例
int y = 1; // 实际变量的声明
int *u; // 指针变量的声明
u = &y; // 在指针变量中存储 y 的地址
// 输出实际变量的值
cout << y << endl;
// 输出在指针变量中存储的地址
cout << u << endl;
// 访问指针中地址的值
cout << *u << endl;
输出结果:
1
008FFA50
1