linux C的关键字static

    static修饰变量,该变量空间独立于函数中的auto变量或栈变量,它在内存的静态区分配

一般来说局部变量存放在栈区;其生命周期随语句块执行结束而结束;用static修饰,该变量就放在内存静态数据区;

其生命周期持续到整个程序结束为止;虽然其变量的生命周期与存储位置变化,但作用域没有改变;

用static修饰局部变量,该变量初始化只在程序初次运行时执行一次,且只执行一次。

若静态局部变量没有初始化,系统会自动赋值为0,字符型数组会自动赋值为'\0'

void f()
{
static int a = 0;
a++;
printf("%d\n",a);

}


int main()
{
f();
f();
return 0;

}

结果:1,2《static只能初始化一次,生命周期随整个程序结束》

对于全局变量;它可在本源文件中访问,也可在同一工程的其他源文件中访问(加上extern声明)

f1.c

int a = 1;

f2.c

extern int a;

int main()

{

    printf("%d\n",a);

    return 0;

}


但若用static修饰时,static int a = 1;f2.c 将无法访问;因为该全局变量仅本源文件可见。


static 修饰函数与全局变量相似


猜你喜欢

转载自blog.csdn.net/yinzewen123/article/details/79663027