C语言基础:C语言变量类型 - 全局变量和局部变量
前言
何为变量? 在我们之前学到的知识里面, 定义过很多变量, 比如int 变量, double变量, long变量, 这些都是属于变量, 这次我们所说的知识是在这些变量的基础上再添加一些知识, 那就是全局变量以及局部变量.
开始
我们来看一个小例子:
#include <stdio.h> int a; void test() { int a = 20; printf("a = %d\n", a); } int main() { printf("a = %d\n", a); int a = 10; a++; printf("a = %d\n", a); test(); }
输出结果:
这里解释一下, 上面三个的a为什么会输出不同的值:
第一个a, 在定义的时候, 并没有把他放入任何一个函数里面, 这也是全局变量的定义方式, 而全局变量在定义的时候, 如果你没有给它赋值, 那么默认都是0, 所以输出是0;
第二个a, 定义在main函数里面, 并且赋值为10, 再++, 那a的值就是11, 所以输出的值是11;
第三个a, 定义在test函数里, 并且赋值为20, 所以输出的值为20;
PS:这一点很重要, 虽然这三个a都是同类型的变量, 但它们的作用域不同, 所以互不影响.
下面是局部变量和全局变量的解释:
1.局部变量:
1> 定义:在函数(代码块)内部定义的变量(包括函数的形参)
2> 作用域:从定义变量的那一行开始,一直到代码块结束
3> 生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收
4> 没有固定的初始值
2.全局变量
1> 定义:在函数外面定义的变量
2> 作用域:从定义变量的那一行开始,一直到文件结尾(能被后面的所有函数共享)
3> 生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁
4> 默认的初始值就是0