【C语言学习笔记】全局变量静态本地变量

    技术2025-06-19  32

    全局变量

    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

    普通本地变量

    int main() { f(); f(); f(); return 0; } void f() { int idx = 1; printf("%d ",idx); idx++; printf("%d\n",idx); }

    输出

    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

    注意:在纯代码编程中,我们应尽可能少的用全局变量和静态本地变量

    Processed: 0.009, SQL: 9