Skip to content

20231126 - 查漏补缺

关键字

  • 所有关键字 (字母顺序排序)

    cpp
    auto break case char const continue default do double else
    enum extern float for goto if int long register return short
    signed sizeof static struct switch typedef union unsigned
    void volatile while
  • auto

    • auto 自动变量, 用于自动推导变量类型
    • auto 仅适用于局部变量
  • const

    • 声明常量
    • 用法: const <type> <var_name>[ = <init_value>];
  • #define

    • #define 定义标识符常量
    • 格式: #define <def> <code>
    • 注意: 常量名一般全部大写
    • 定义宏示例:
    cpp
    // 定义 MIN 以返回 x, y 中较小那个
    #deinfe MIN(x, y) (x > y ? y : x)
    
    MIN(1, 2)  // 返回 1
    MIN(-514, -114)  // 返回 -514
  • enum

    • enum 定义枚举常量
    • 用法
    cpp
    enum <name> {
      <item01>,  // 默认为 0
      <item02>  // +1 ...
    }
  • default

    • default switch 语句的 default
  • do

    • dowhile 基本相同
  • register

    • 计算机存储或暂时存储的位置 (快到慢, 造价高到低)
      1. 寄存器
      2. 高速缓存 (高频内存)
      3. 内存
      4. 硬盘like
    • 用法: register <type> <var_name>[ = <init_value>]
  • signed

    • 有符号数 (可省略)
  • static

    • 静态变量, 在栈销毁时不会被销毁
    • 仅限当前文件使用, 不能被 extern 修饰, 也不能修饰函数
      (static 改变了函数的外部链接属性为内部连接, 致使原来每个函数均具有的可跨文件使用的外部链接属性, 致使编译报错)
    • 用法
    cpp
    void add() {
      static int a = 0;  // 如果多次调用 add, a 会一直加
      int b = 0;  // 非静态的 b 每次都是 0+1=1
      a ++;
      b ++;
    }
  • extern

    • 想外部暴露变量或内容, 相当于 js 的 export
    • static 不兼容
  • typedef

    • 可以自定义类型别名
    • 用法: typedef <...type> <alias>;
    • 例子: typedef unsigned int uInt; -> 将 uInt 定义为无符号整型的别名, 使用其声明变量时与原来的类型相同
  • union

    • union 联合体/共用体
    • 其允许在相同的内存空间存储不同的数据类型 (有点动态类型语言那味儿了?

转义字符

转义字符解释
\\用于表示一个反斜杠, 以免进一步被转义 (已经被转义了, 打了4个)
\a警告字符, 发出蜂鸣
\b退格符, 将光标移到前一个字符前
\f进纸符, 光标进入下一页开头
\n换行符
\r回车符
\t水平制表符 (Tab)
\v垂直制表符
\<d><d><d>表示三个十六进制所对应的字符; 如 \130 表示 X
\x<d><d>表示两个十六进制所对应的字符; 如 \x30 表示 0