一、常量
1.字面常量
在C语言中,字面常量是直接在代码中表示固定值的符号。这些值在编译时就已经确定,并且在程序执行期间不会改变,包括数字、字符、字符串。
2.const修饰的常变量
在C语言中,常变量(或称为只读变量)是一个在程序执行期间其值不能被修改的变量。但是,与字面常量不同,常变量是在内存中分配了空间的,并且它们是通过变量名来访问的。常变量的值在初始化后就不能被重新赋值。通过使用const
关键字来声明常变量。const
关键字告诉编译器该变量的值不应该被修改。
可以看到无法用scanf函数对a重新进行赋值,并且不能在程序内对a赋值,会报错。
3.#define定义的标识符常量
使用 #define
定义的标识符常量在预处理阶段会被替换为其对应的值或代码片段,这个过程在编译之前发生。如在主函数之前定义#define MAX 100,程序中出现的MAX都会被自动替换为100,且不能再对MAX赋值,会报错。
4.枚举常量
枚举类型的定义使用关键字 enum
,后跟枚举类型的名称和用花括号括起来的一组枚举成员(也称为枚举常量)。枚举成员默认是整型的,通常从0开始,依次递增。但是,你也可以显式地指定某个枚举成员的值,这时其后的枚举成员将依次递增该值。
二、变量
1.局部变量和全局变量
局部变量:是在函数内部定义的变量
全局变量:是在所有函数外部定义的变量
当局部变量和全局变量都定义为同一个变量名时,局部变量优先
2.变量的作用域和生命周期
局部变量:
- 作用域:局限于定义它的函数内部,包括该函数中嵌套的任何块(如
if
语句、for
循环等)。 - 生命周期:从变量定义开始,到包含它的函数执行完毕时结束。
全局变量:
- 作用域:全局变量的作用域是整个程序,包括所有源文件(如果使用了多个源文件的话,并且全局变量被声明为
extern
,或者在多个文件中都定义了相同的全局变量)。 - 生命周期:从程序开始执行时创建,到程序执行结束时销毁。