C++ 从 0 入门(二)|引用与指针区别、函数重载、内联函数(面试高频)
大家好我是网域小星球。本篇聚焦C 面试核心考点全是面试官必问、笔试题常考内容衔接上一篇基础不冗余、不堆砌只讲核心用法 面试踩分点所有代码 VS2022 可直接运行学完能应对 C 基础面试的核心提问。目录一、核心学习目标面试导向二、引用与指针的区别面试必背满分答案1. 核心区别汇总面试直接答2. 代码对比示例直观理解3. 面试补充考点三、函数重载C 核心特性笔试必考1. 函数重载概念2. 函数重载的 3 个条件缺一不可3. 代码示例笔试常考写法4. 面试坑点必避四、内联函数inline替代宏函数面试高频1. 内联函数作用2. 语法与用法3. 内联函数核心规则面试必背4. 面试考点内联函数与宏函数的区别五、本章核心总结面试速记下期预告一、核心学习目标面试导向吃透引用与指针的区别面试必问重中之重掌握函数重载C 核心特性笔试常考理解内联函数替代宏函数面试高频考点掌握三大知识点的笔试题写法避免踩坑二、引用与指针的区别面试必背满分答案这是 C 入门面试最常问的题记住5 个核心区别直接应对面试官提问结合代码理解更易记。1. 核心区别汇总面试直接答对比维度引用指针*本质变量的别名无独立内存指向变量地址的变量有独立内存初始化必须初始化绑定一个变量可初始化也可先定义后赋值可空指向更改一旦绑定无法更改指向可随时更改指向的变量空值无空引用不存在野引用有空指针NULL/nullptr、野指针内存开销无额外内存开销占用 4/8 字节取决于系统2. 代码对比示例直观理解#include iostream using namespace std; int main() { // 引用示例 int a 10; int b a; // 必须初始化绑定a b 20; // 更改别名a同步改变不是更改指向 // 指针示例 int *p a; // 可初始化指向a p b; // 可更改指向指向b原指向失效 cout a a endl; // 输出20 cout *p *p endl; // 输出20 return 0; }3. 面试补充考点引用常用于函数传参、函数返回值减少拷贝提高效率指针常用于动态内存管理、数组遍历、多态实现C 中优先用引用安全、简洁需要更改指向时用指针。三、函数重载C 核心特性笔试必考1. 函数重载概念同一作用域内函数名相同参数列表不同参数个数、类型、顺序不同编译器自动匹配调用解决函数命名冗余问题。2. 函数重载的 3 个条件缺一不可函数名完全相同参数列表不同个数不同 / 类型不同 / 顺序不同作用域相同比如都在全局作用域。3. 代码示例笔试常考写法#include iostream using namespace std; // 1. 参数个数不同 void add(int a, int b) { cout 两个int相加 a b endl; } void add(int a, int b, int c) { cout 三个int相加 a b c endl; } // 2. 参数类型不同 void add(double a, double b) { cout 两个double相加 a b endl; } // 3. 参数顺序不同 void add(int a, double b) { cout intdouble a b endl; } int main() { add(10, 20); // 调用两个int的add add(10, 20, 30); // 调用三个int的add add(3.14, 5.20); // 调用两个double的add add(10, 3.14); // 调用intdouble的add return 0; }4. 面试坑点必避函数返回值不同不能构成函数重载编译器无法区分参数名不同不能构成函数重载参数列表本质无区别引用作为参数时const修饰会构成重载比如void func(int)和void func(const int)。四、内联函数inline替代宏函数面试高频1. 内联函数作用替代 C 语言的宏函数解决宏函数无类型检查、优先级混乱的问题同时保留宏函数 “无调用开销” 的优点。2. 语法与用法用inline关键字修饰函数编译器会将函数代码直接嵌入到调用处避免函数调用的栈帧开销。#include iostream using namespace std; // 内联函数替代宏函数 SQR(x) ((x)*(x)) inline int sqr(int x) { return x * x; } int main() { int res sqr(5); // 编译器会直接替换为 res 5 * 5; cout res endl; // 输出25 return 0; }3. 内联函数核心规则面试必背inline是编译器建议不是强制要求复杂函数编译器会忽略内联内联函数不能有循环、switch、递归复杂逻辑编译器不会内联内联函数通常写在头文件中方便编译器嵌入调用内联函数无函数调用开销适合短小、频繁调用的函数比如工具函数。4. 面试考点内联函数与宏函数的区别对比维度内联函数inline宏函数#define类型检查有严格的类型检查无类型检查纯文本替换安全性安全避免优先级问题不安全易因优先级出错调试可调试和普通函数一样不可调试预编译阶段替换适用场景短小、频繁调用的函数简单常量替换、简单计算五、本章核心总结面试速记引用是别名无内存、不可改指向指针是地址变量有内存、可改指向函数重载 3 条件同名、同作用域、参数列表不同返回值不算内联函数替代宏函数有类型检查、可调试适合短小频繁调用三大知识点是 C 基础面试的核心必须熟练掌握代码写法和区别。下期预告C 从 0 入门三类与对象基础封装、构造函数、析构函数面试必考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2528344.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!