1. 全局变量:
全局变量是在函数外部声明的变量,在整个程序中都是可见的。
全局变量在程序启动时被创建,在程序结束时才被销毁。
全局变量可以被程序中的任何函数访问和修改。
全局变量的作用域是整个程序。
外部变量也是一种全局变量,通过使用 `extern` 关键字在不同文件之间共享。
2. 外部变量:
外部变量是指在一个文件中定义,而在另一个文件中声明的全局变量。
通过使用 `extern` 关键字,可以在一个文件中引用另一个文件中定义的全局变量。
外部变量的作用域是整个程序,可以在不同文件中共享。
举个例子:我在文件a中定义了一个全局变量,想在文件b中使用,就需要声明
这样做的目的是告诉编译器该全局变量是在其他文件中定义的,避免编译器在链接阶段找不到该变量的定义而产生错误。通过使用 `extern` 声明,编译器就知道在其他文件中有这个全局变量的定义,可以正确地将这两个文件连接在一起。
3. 局部变量:
局部变量是在函数内部声明的变量,只在声明它的函数内部可见。
局部变量在函数执行时被创建,在函数执行结束时被销毁。
局部变量的作用域限定在声明它的函数内部。
同一个函数内部可以有多个同名的局部变量,它们之间不会相互影响。
#include <stdio.h>
// 全局变量
int globalVar = 10;
// 外部变量
extern int externalVar;
void func1() {
// 局部变量
int localVar = 20;
// 访问全局变量
printf("Global variable inside func1: %d\n", globalVar);
// 访问局部变量
printf("Local variable inside func1: %d\n", localVar);
}
void func2() {
// 访问全局变量
printf("Global variable inside func2: %d\n", globalVar);
// 访问外部变量
printf("External variable inside func2: %d\n", externalVar);
}
int main() {
// 外部变量定义
externalVar = 30;
// 调用函数 func1
func1();
// 调用函数 func2
func2();
return 0;
}
在上面的代码示例中,我们定义了全局变量 `globalVar` 和外部变量 `externalVar`,以及两个函数 `func1` 和 `func2`,以及 `main` 函数。
`globalVar` 是一个全局变量,在整个程序中都可见。
`externalVar` 是一个外部变量,在另一个文件中定义,在本例中通过 `extern` 关键字声明并在 `main` 函数中定义。
`localVar` 是一个局部变量,在 `func1` 函数内部定义,只在该函数内部可见。
通过这个示例,可以看到全局变量、外部变量和局部变量之间的区别和关系。全局变量和外部变量具有全局作用域,可以在整个程序中访问,而局部变量具有局部作用域,只在声明它的函数内部可见。外部变量通过 `extern` 关键字在不同文件中共享,起到了连接不同文件中全局变量的作用。