1.没有初始化的全局变量会得到0,指针会得到NULL值。 2.只能用编译时刻已知的值来初始化全局变量。 比如
int a=12; int b=a+2;会出现错误,因为系统会认为你把一个变量的值作为一个全局变量的初始值,即使我们知道b为14。应该如下修改就可以了。但是非常不建议用这种方法初始化全局变量。
const int a=12; int b=a+2;3.它们的初始化发生在main函数之前。 4.当出现和全局变量同名的变量时,全局变量会隐藏。在更小地方,你可以重新定义在更大地方出现过的变量。
int idx=0; int main() { int idx = 1; { int idx = 2; printf("%d",idx); } return 0; }输出
2输出
1 2 1 2 1 2静态本地变量实际上是一个特殊的全局变量,和全局变量有相同的内存区域和全局的生存期,但只有函数内部的作用域。 静态本地变量保持上次离开函数时的初值。
int main() { f(); f(); f(); return 0; } void f() { static int idx = 1;//静态本地变量 printf("%d ",idx); idx++; printf("%d\n",idx); }输出
1 2 2 3 3 4注意:在纯代码编程中,我们应尽可能少的用全局变量和静态本地变量