全局变量定义:
-
定义在函数外的变量是全局变量
-
全局变量具有全局的生存期和作用域
-
它们与任何函数都无关
-
在任何函数内部都可以使用
-
全局变量初始化:
-
没有做初始化的全局变量会得到 0 值 (局部变量会得到随机值)
- 指针会得到NULL
-
只能用编译时刻已知的值来初始化全局变量
-
它们的初始化发生在main函数之前
被隐藏的全局变量:
- 如果函数内部存在与全局变量同名的变量,则全局变量被隐藏
实例:
#include <stdio.h> int f(void); int gAll = 12;
//int gAll = f(); 用编译时刻未知的值初始化,编译不能通过 int main(int argc,char const *argv[]) { printf("in %s gAll=%d ",__func__,gAll); // __func__ 指的是当前函数名称 f(); printf("again in %s gAll=%d ",__func__,gAll); return 0; } int f(void) { int gAll = 1; printf("in %s gAll=%d ",__func__,gAll); gAll += 2; printf("again in %s gAll=%d ",__func__,gAll); return gAll; }
运行结果:
in main gAll=12 in f gAll=1 again in f gAll=3 again in main gAll=12