了解什么是作用域,以及它在C语言中如何工作
当你在C语言程序中定义一个变量时,根据你声明它的位置,它将有一个不同的作用域。
这意味着它在某些地方可以使用,但在另一些地方则不能使用。
这个位置决定了2种类型的变量。
- 全局变量
- 本地变量
这就是区别:在一个函数内声明的变量是一个局部变量,像这样。
int main(void) {
int age = 37;
}
本地变量只能从函数内部访问,当函数结束时,它们就停止存在。它们会从内存中被清除(有一些例外)。
在函数之外定义的变量是一个全局变量,就像这个例子中一样。
int age = 37;
int main(void) {
/* ... */
}
全局变量可以从程序的任何函数中访问,它们在程序的整个执行过程中都是可用的,直到程序结束。
我提到,局部变量在函数结束后就不再可用。
原因是局部变量默认是在堆栈中声明的,除非你使用指针在堆中明确地分配它们,但这样你就必须自己管理内存。