C++引用与指针:核心区别与实战解析

发布时间:2026/7/24 8:36:05

C++引用与指针:核心区别与实战解析 一、上期回顾OOP 三大特性收官继承、虚函数、动态多态、抽象类、虚析构。今天攻坚引用 指针把 C 最核心、面试最爱问的底层区别彻底啃透。二、引用基础概念1. 什么是引用引用就是变量的别名不开辟新内存和原变量共用同一块空间。语法int a 10; int b a; // b 是 a 的别名2. 核心特性引用必须初始化不能空置一旦绑定不能改指向引用本身无独立内存地址只能绑定同类型变量三、引用最简演示#include iostream using namespace std; int main() { int a 10; int b a; b 20; cout a endl; // 20改别名就是改原变量 return 10; }四、引用做函数参数最常用1. 值传递形参是副本修改不影响实参void swapVal(int x, int y) { int t x; x y; y t; }2. 指针传递靠地址间接修改void swapPtr(int* x, int* y) { int t *x; *x *y; *y t; }3. 引用传递直接别名修改写法干净void swapRef(int x, int y) { int t x; x y; y t; }工程开发优先用引用简洁、安全、不用解引用。五、引用做返回值可以返回引用可以作为左值被赋值int test(int a) { return a; } int main() { int x 10; test(x) 100; // x 变成 100 return 0; }禁忌不要返回局部变量引用局部变量出作用域销毁引用悬空。六、指针与引用底层五大区别面试必背表格对比维度指针 Pointer引用 Reference内存空间独立开辟内存存地址无独立内存别名共用空间初始化可不初始化可置 NULL必须初始化不可为空更改指向可以随时改指向别的变量一旦绑定不可更改指向使用方式需要*解引用、-访问成员直接用像普通变量层级支持多级指针int**不支持多级引用一句话总结引用是受限的指针更安全、更简洁指针更灵活、可空、可改指向。七、const 修饰指针与引用高频坑点1. const 修饰普通变量const int a 10; // a 20; 报错只读2. const 指针三种写法常量指针指向的值不可改const int* p;指针常量指针本身地址不可改int* const p;双 const地址、值都不可改const int* const p;3. const 引用常用在函数形参防止修改原数据void show(const int a) { // a 100; 报错 }八、内存模型通俗理解指针单独一块内存存另一个变量的地址像 “门牌号”引用没有门牌号直接给原房子再起一个名字共用同一套房九、今日核心总结引用是变量别名无独立内存必须初始化、不可改绑定函数传参值传副本、指针传地址、引用传别名最优引用可做返回值禁止返回局部变量引用指针灵活可空、可改指向引用安全简洁不可空const 修饰区分常量指针、指针常量、常引用十、课后练习分别用 值传递、指针传递、引用传递 实现两数交换写出const int*和int* const的区别并代码验证尝试返回局部变量引用观察警告 / 崩溃

相关新闻