总结
引用:
因为引用是变量的别名,所以引用必须初始化
因为引用不存在自己的地址,所以指针不能指向引用,即不能定义引用的指针
因为引用不是对象,但是引用又要绑定一个对象,所以不能定义引用的引用
int &(&c)=a; //报错
int& ref = value;
int& ref_ref = ref; // 不报错 因为ref本质是数字
cout << &ref << endl; //0000000EADFBFC34
cout << ref << endl; //42
因为操作引用就是操作变量或者对象本身,所以对于内置类型,变量和其引用之间的类型要适配
因为引用必须和变量进行绑定,所以非const引用不能绑定字面值
指针:
定义一个指针可以不用初始化(实际上这个指针变量中已经有一个值),但是在使用指针时一定要确定它是否被初始化即是否指向了某一个确定的可访问的内存位置,否则会导致野指针
因为指针是一个对象,所以可以定义指针的指针
//指针的指针: 指一个指针存储了另一个指针的地址,例如:
int value = 42;
int *ptr = &value;
int **ptr_ptr = &ptr; // 定义指向指针的指针
cout << ptr << endl; //000000F2B4DEFA64
cout << *ptr << endl; //42
cout << ptr_ptr << endl; //000000F2B4DEFA88
cout << *ptr_ptr << endl; //000000F2B4DEFA64
cout << **ptr_ptr; //42
// 通过*ptr_ptr获取ptr指向的地址,再通过**ptr_ptr获取value的值。
因为指针是对象,引用不是,所以可以定义指针的引用
指针所指向的数据的类型要和指针的类型一致
概念
符号
"&" 取地址运算符
”*“ 访问指针的内存数据
引用
1.引用就是对象或变量的别名,但引用不是对象或变量
int a=10; int &b=a;
这里面,b就是变量a的另一个名字,对b操作就是对a操作,对a操作,b也会变化
引用不初始化会报错
int a=10;
int &b;
指针
1.指针就是变量的地址,可以通过引用访问变量,也可以通过指针访问变量,但是指针是对象,而引用不是,这是二者的根本区别
REF:
(31条消息) C++知识点2——指针、引用基础_如何定义一个引用型指针_Master Cui的博客-CSDN博客
为什么指针声明必须初始化 - 知乎 (zhihu.com)