存储类型 | 关键字 | 生命周期 | 定义位置 | 作用域 | 初始值 | 引用 | 何时使用 |
动态变量 | 无(auto) | 临时 | 函数内 | 局部 | 任意,所以要初始化 | ||
静态变量 | static | 临时 | 函数内 | 局部 | 任意,所以要初始化 | 保持局部变量的值 | |
寄存器变量 | register | 临时 | 函数内 | 局部 | 任意,所以要初始化 | 量小且频繁 | |
外部变量 | 无 | 永久 | 函数外 | 全局(一个文件) | 初始值为0 | 函数中引用外部变量,用extern声明 | 大部分函数需要这个变量 |
静态外部变量 | static | 永久 | 函数外 | 全局(所有文件) | 初始值为0 |
const,define区别
C语言用 #define来定义常量(称为宏常量)。C++ 语言除了 #define外还可以用const来定义常量(称为const常量)。
C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:375269516
1. const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。375269516
2. 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。375269516
* 【规则5-2-1】在C++ 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。
see as:http://www.w3sky.com/0/282.html