C++八股

失败的秋招体验,我要开始好好学习,记录我的八股。

文章目录

静态变量和全局变量、局部变量的区别?在内存上是怎么分布的

  1. 作用域
    静态变量:静态全局变量的作用域仅限于定义它的文件内部,静态局部变量的作用域则与普通局部变量相同 ,只在定义它的函数或代码块内部可见。
    全局变量:在整个程序中都是可见的,从定义处开始到文件结束,甚至可以通过extern在其他文件中使用。
    局部变量:只在定义它的函数或代码块内部可见。
  2. 生命周期
    静态变量:静态全局变量从程序开始到程序结束;静态局部变量在第一次 进入函数时被创建,在程序结束时销毁。* 静态局部变量只被初始化一次,即使函数被多次调用,它也会保持上一次的值。
    全局变量:在程序开始时被创建,在程序结束时销毁。生命周期贯穿整个程序运行期间。
    局部变量: 在进入函数或代码块时被创建,在离开时销毁。每次函数调用都会重新创建和销毁。
  3. 存储位置
    静态变量:存储在全局/静态存储区(也称为数据段)。
    全局变量:存储在全局/静态存储区(也称为数据段)。
    局部变量:通常存储在栈(除非被特别指定为静态或动态分配)。
  4. 初始化
    静态变量:如果没有显式初始化,基本数据类型会自动被初始化为0,指针型会自动被初始化为空。
    全局变量:如果没有显式初始化,基本数据类型会自动被初始化为0,指针型会自动被初始化为空。
    局部变量: 必须使用前显示初始化,否则值为未定义。
  5. 链接属性
    静态变量:静态全局变量具有内部链接,只能在其定义的文件内使用;静态局部变量无链接,因为只在定义它们的函数或代码块内可见。
    全局变量:具有外部链接,可以在其他文件中使用(通过extern声明)
    局部变量: 无链接,因为只在定义它们的函数或代码块内可见。
  6. 使用场景
    静态变量:静态全局变量用于限制变量只在当前文件内使用,避免命名冲突;静态局部变量,可以在需要保持函数调用之间状态的情况,例如计数器、单例模式等。
    全局变量:当需要在多个函数或文件之间共享数据时使用,但应谨慎使用,因为它会增加程序的耦合性。
    局部变量:用于函数内部,避免函数间的相互影响。

指针和引用的区别

  1. 概念上:指针是一个存储另一个变量地址的变量,指向内存中的一个位置;引用是变量的另一个别名,不可变,必须初始化。
  2. 空状态:指针可以被初始化为NULL或nullptr,表示不指向任何地址;而引用定义时必须被初始化,不能引用NULL或不存在的内存地址。
  3. 可变性:指针可以指向一个变量地址后可以改变,指向不同内存地址;引用一旦被初始化,将一直引用同一个对象,不能改变绑定。
  4. 操作:指针可通过解引用操作符 * 访问指针指向的变量的值,可通过地址运算符 & 获取变量的地址。而引用在声明时被初始化,并在整个生命周期一直引用同一个变量,本身就是变量的别名,不用别的操作符。
  5. 使用场景:指针可用在动态内存分配、数组操作以及函数参数传递等场景;引用可用在函数参数传递、操作符重载以及创建别名等场景。
相关推荐
代码村新手9 分钟前
C++-多态
开发语言·c++
玖釉-23 分钟前
旋转图像:从矩阵转置、镜像到坐标变换的系统理解
c++·windows·算法·图形渲染
咩咦1 小时前
C++学习笔记23:const 成员函数
c++·学习笔记·类和对象·const·this指针·const成员函数
3DVisionary2 小时前
精密模具电极如何测形变?蓝光三维扫描3D检测方案解析
c++·数码相机·蓝光三维扫描·质量控制 qc·形位公差分析·模具电极检测·非接触三维测量
小小编程路2 小时前
C++类作用域
java·jvm·c++
计算机安禾3 小时前
【c++面向对象编程】第46篇:CRTP(奇异递归模板模式):静态多态的妙用
开发语言·c++·算法
hhcgchpspk3 小时前
easyx按键游戏
c++·stm32·单片机·游戏·easyx
郝学胜-神的一滴3 小时前
Qt 高级开发 011: 跨线程信号槽实战
开发语言·c++·qt·程序人生·开源软件·用户界面
学困昇3 小时前
Linux 动静态库制作与原理:从 .a、.so 到 ELF 加载一次讲透
linux·运维·服务器·c语言·开发语言·c++·人工智能
basketball6163 小时前
C++面试考点 头文件与实现文件形式
开发语言·c++