前言
感谢各位大佬百忙之间过来观看,从前端到嵌入式,我的转行经历和经验分享!《C 语言小白入门篇》带大家零基础学好好 C 语言。从入门到到放弃,希望大家多多支持!
变量作用域和生命周期
作用域
作用域是指变量在程序中可被访问的范围。在 C 语言中,变量的作用域分为局部作用域和全局作用域。
-
局部变量的作用域:局部变量是在函数内部定义的变量,它的作用域仅限于函数内部。也就是说,只有在函数内部才能访问和修改局部变量。
#include <stdio.h> void function() { int localVar = 10; // 局部变量 printf("Local variable: %d\n", localVar); } int main() { function(); // 尝试访问局部变量 localVar,将会导致错误 // printf("Local variable: %d\n", localVar); return 0; }在上述代码中,
localVar是在function函数内部定义的局部变量,它的作用域仅限于function函数内部。在main函数中尝试访问localVar将会导致错误。 -
全局变量的作用域:全局变量是在函数外部定义的变量,它的作用域是整个程序。也就是说,在程序的任何地方都可以访问和修改全局变量。
#include <stdio.h> int globalVariable = 10; // 全局变量 void function() { printf("Global variable: %d\n", globalVariable); } int main() { function(); printf("Global variable: %d\n", globalVariable); return 0; }在上述代码中,
globalVariable是在函数外部定义的全局变量,它的作用域是整个程序。在function函数和main函数中都可以访问和修改globalVariable的值。
生命周期
生命周期是指变量在程序中存在的时间。在 C 语言中,变量的生命周期分为静态生命周期和动态生命周期。
-
局部变量的生命周期:局部变量的生命周期是动态的,它在函数被调用时创建,在函数返回时销毁。
-
全局变量的生命周期:全局变量的生命周期是静态的,它在程序运行期间一直存在,直到程序结束。
常量
常量是指在程序运行过程中其值不能被改变的量。C 语言中的常量分为以下几种:
-
字面常量:字面常量是指直接在程序中使用的常量,例如整数常量、浮点数常量、字符常量和字符串常量。
#include <stdio.h> int main() { int number = 10; // 整数常量 float pi = 3.14; // 浮点数常量 char letter = 'A'; // 字符常量 printf("Number: %d\n", number); printf("Pi: %.2f\n", pi); printf("Letter: %c\n", letter); return 0; }在上述代码中,
10、3.14和'A'都是字面常量。 -
const 修饰的常变量:const 修饰的常变量是指使用 const 关键字修饰的变量,它的值在程序运行期间不能被改变。
#include <stdio.h> int main() { const int number = 10; // 常变量 printf("Number: %d\n", number); // 尝试修改常变量,将会导致错误 // number = 20; return 0; }在上述代码中,
number是使用const关键字修饰的常变量,它的值在程序运行期间不能被改变。 -
#define 定义的标识符常量:#define 定义的标识符常量是指使用 #define 预处理指令定义的常量,它的值在程序编译期间就已经确定,并且在程序运行期间不能被改变。
#include <stdio.h> // 定义标识符常量 #define PI 3.14 int main() { float radius = 5.0; float area = PI * radius * radius; printf("Area: %.2f\n", area); return 0;在上述代码中,使用
#define预处理指令定义了标识符常量PI,它的值在程序编译期间就已经确定,并且在程序运行期间不能被改变。 -
枚举常量:枚举常量是指使用 enum 关键字定义的常量,它的值是枚举类型中的一个枚举值。
#include <stdio.h> // 定义枚举类型 enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }; int main() { enum Day today = WEDNESDAY; // 枚举常量 printf("Today is %d\n", today); return 0; }在上述代码中,使用
enum关键字定义了枚举类型Day,其中MONDAY、TUESDAY等都是枚举常量。在main函数中,使用WEDNESDAY枚举常量来表示星期三。
枚举常量
-
枚举类型的值是多少呢? :枚举类型的值是枚举类型中的一个枚举值,它可以是整数类型或字符类型。
-
枚举类型的值怎么修改? :枚举类型的值在定义后不能被修改,但是可以通过强制类型转换将枚举值转换为其他类型的值。
总结
以上就是关于 C 语言中作用域和常量的简单介绍。希望这篇文章能够帮助你快速了解这些概念。如果你有任何其他问题,请随时提问。