C的自我修养

2018-01-25  本文已影响0人  雨墨心

关于全局变量、局部变量和static

  1. 变量有全局变量、局部变量之分。全局变量的作用域是从声明的那一行开始,默认是可以被外部引用的。而局部变量是在函数内声明的。局部变量的生命随着函数调用的结束而结束。而全局变量的生命周期会保留直到程序运行完毕
  2. 以上说的是正常情况,如果遇到非正常情况,比如加了static。那么情况则完全不同了。
    static作用的变量被称为静态变量。当static 修饰全局变量的时候,则该变量本可以被外部文件调用,现在变得不可以了。 当static 修饰局部变量的时候么,则本来在函数调用结束的时候就释放了的变量现在变得一直存在,直到程序结束。 可以理解为static告诉系统,这个变量你只要声明一次,以后在本程序运行完毕前你都不需要声明了,直接用。

一个例子

/* 函数内声明一个局部变量,并且加上static关键字,当函数调用结束后,该变量并不会被销毁依然存在,如何通过程序证明之*/

#include <stdio.h>

void func1(void) 
{
    static int a = 100;
    a++;
    printf("%d\n",a);
}

int main(void)
{
    func1();
    func1();
    func1();
}

/*输出 
101
102
103
声明一个变量,给我的感觉就是,让系统为该变量分配内存。
在局部变量用static声明之后,告诉系统,这个变量只分配一次内存,以后每次调用,不用再分配内存。
*/

上一篇下一篇

猜你喜欢

热点阅读