区别
指针 | 引用 | |
---|---|---|
本质 | 一个变量 | 变量的别名 |
初始化 | 可以不初始化,可以初始化nullptr | 必须初始化,之后不能引用其他变量 |
const | 指针常量和常量指针 | 常引用 |
修改 | 修改指针本身,修改指针指向的内存 | 修改引用的变量 |
sizeof | 指针本身的大小 | 被引用变量的大小 |
自增,自减 | 指向下一个同类型地址,如数组指针 | 引用变量的自增,自减 |
指针和引用做函数参数的区别
【指针传参】的本质是值传递
【引用传递】被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。