C++ 面试知识点总结

目录关键字`static`:控制变量的存储方式和可见性`const`:常量限定符,告知编译器该变量是不可修改的`extern`: 外部变量/函数声明引用`volatile`:易变的`sizeof`:判断数据类型或表达式长度的运算符基础语法常见问题1. 堆和栈的区别2. 数组和指针的区别3. 全局变量和局部变量的区别4. 空指针和悬垂指针的区别5. `sizeof` 与 `strlen` 的区别6. `const` 和 `#define` 的区别7. 文件包含用中括号和引号的区别8. 指针(*)与引用(&am
摘要由CSDN通过智能技术生成

关键字

static:控制变量的存储方式和可见性

  1. 修饰局部变量 该变量存储区由栈区变为静态数据区,其生命周期延长到整个程序执行结束。该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值。其作用域仍然是一个局部作用域。
  2. 修饰全局变量 改变了其作用域的范围,由原来的整个工程可见(extern)变为本源文件可见。
  3. 修饰函数 与修饰全局变类似,改变了函数的作用域。
  4. C++ 中的 static 修饰成员函数,表示该函数属于一个类而不是属于此类的任何特定对象,不接收 this 指针,因而只能访问类的 static 成员变量。修饰成员变量,表示该变量为类以及其所有的对象所有。它们在存储空间中都只存在一个副本,可以通过类和对象去调用。

const:常量限定符,告知编译器该变量是不可修改的

  • 修饰基本数据类型
  1. 修饰一般常量及数组 可以用在类型说明符前或类型说明符后。
  2. 修饰指针变量 * 及引用变量 & 位于星号的左侧,指针指向的变量为常量;位于星号的右侧,指针本身是常量。
  • 应用到函数中
  1. 修饰参数 进行常量化,保护了原对象的属性。通常用于参数为指针或引用的情况;
  2. 修饰返回值 按照"修饰原则"进行修饰,起到相应的保护作用。
  • 在类中的用法
  1. 修饰成员变量 初始化只能在类构造函数的初始化表中进行
  2. 修饰成员函数 不能修改所在类的的任何变量,重载函数的一个方式。
  • 修饰类对象,定义常量对象
  1. 只能调用常量函数,别的成员函数都不能调用。

extern: 外部变量/函数声明引用

  1. C 语言中,修饰变量/函数,表示此变量/函数是在别处定义的,要在此处引用。
    调用其它文件中的变量/函数,只需把该文件用#include包含进来即可,为啥要用 extern ?因为用 extern 会加速程序的编译过程,这样能节省时间。
  2. C++extern 还有另外一种作用,用于指示 C 或者 C++ 函数的调用规范。
    C++ 中调用C 库函数,extern “C” 声明要引用的函数。告诉链接器在链接的时候用 C 函数规范来链接。主要原因是 C++C 程序编译完成后在目标代码中命名规则不同,用此来解决名字匹配的问题。

volatile:易变的

  • 易变性。在汇编层面反映出来就是两条语句,下一条语句不会直接使用上一条语句对应的 volatile 变量的寄存器内容,而是重新从内存中读取。
  • “不可优化”特性volatile 告诉编译器不要对变量进行优化,甚至将变量直接消除,保证写在代码中的指令一定会被执行。
  • ”顺序性”。能够保证 volatile 变量间的顺序性,编译器不会进行乱序优化。

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值