1.引用只能绑定一个实体,而指针可以指向不同实体
2.使用指针时要判空,而引用不需要因此更安全
3.引用在定义时必须初始化,指针不做要求
4.在sizeof中:引用结果是引用类型的大小,但指针始终是地址空间所占字节个数
void Size() { long long x = 10; long long& a = x; long long* p = &x; cout << sizeof(a) << endl; cout << sizeof(p) << endl; }
5.引用自加即引用的实体增加1,指针自加即指针向偏移一个类型的大小
void Add() { int num1 = 20; int& nu = num1; cout << num1 << endl; cout << &num1 << endl; cout << &nu << endl; nu++; cout << num1 << endl; cout << &num1 << endl; cout << &nu << endl; int num = 20; int* p = # cout << num << endl; cout << &num << endl; cout << &*p << endl; cout << &p << endl; p++; cout << num << endl; cout << &num << endl; cout << &*p << endl; cout << &p << endl; }
6.有多级指针,但没有多级引用 // const int&& ra=10;(右值引用)C++11
7.访问实体时,指针需要显式解引用,而引用(编译器处理)
8.没有null引用,但有null指针若需要详细代码请搜查看
https://github.com/AventadorSQ
珍&源码