TCPL第四章整理

4.3 外部变量

  • 外部变量可以在全局范围内访问;
  • 外部变量与内部变量相比具有更大的作用域和更长的生存期。
  • push操作中要注意+和*满足交换律,弹出次序无关紧要;而-与/需对运算符的左右操作数加以区分。
  • 格式显示“%g”为浮点数输出,不显示无意义的零"0"。
  • 当跳过不做任何操作的时候直接用;显示


4.4 作用域规则

  • 如果要在外部变量的定义之前使用变量,或者外部变量的定义与变量的使用不在同一个源文件中,则必须在相应的变量声明中强制性地使用关键字extern
  • 在一个源程序的所有源文件中,一个外部变量只能在某个文件中定义一次,而其它文件可以通过extern声明访问它。


4.6 静态变量

  • 通过static限定外部对象,可以达到隐藏外部对象的目的。
  • 如果把函数声明为static类型,则该函数名除了对该函数声明所在的文件可见外,其它文件都无法访问。
  • static类型的内部变量是一种只能在某个特定函数中使用但一直占据存储空间的变量。


4.7 寄存器变量

  • 将register变量放在机器的寄存器中,这样可以使程序更小、执行速度更快。
  • 对于过量的寄存器,编译器可以忽略过量的或不支持的寄存器变量声明。
  • 无论寄存器变量实际上是不是存放在寄存器中,它的地址都是不能访问的。


4.9 初始化

  • 在不进行显示初始化的情况下,外部变量和静态变量都将被初始化为0,而自动变量和寄存器变量的初值则没有定义,且初始化表达式必须是常量表达式,只初始化一次。


4.10 递归

  • 递归代码比较紧凑,并且更易于编写与理解。


4.11 C预处理器

  • 宏替换中替换只对记号进行,对括在引号中的字符串不起作用。
  • #undef 取消名字的宏定义。
  • 在替换文本中,参数名以#作为前缀则结果将被扩展为由实际参数替换该参数的带引号的字符串。
  • "被替换为\",反斜杠\将被替换为\\

你可能感兴趣的:(TCPL第四章整理)