c语言static是什么意思
c语言static是指,在函数之外定义一个变量,是默认的加上了static。如果出现在函数内部,则表示该变量不是自动变量,它是一个可以初始化的变量(如果不进行显式初始化,默认值是0)。改变了它的值以后,函数结束时它的值也会保留。
一、 概述
Static,顾名思义是静态、静止的意思,个人理解的含义是私有、静态。
私有就是隐藏。
1.static函数只能声明后的本文中调用
2.static全局变量只能声明后的本文中调用
3.static局部变量只能声明后的本函数调用
静态就是一直存在,相对于每次调用动态分配而言。
1.static函数(未验证是否每次调用代码地址都是一致的)
2.static全局变量生命周期到程序或进程结束;
3.static局部变量生命周期到程序或进程结束;
二、 作用
1.修饰函数
2.修饰全局变量
3.修饰局部变量
其中对函数、全局变量的修饰强调私有性,就是说这个函数、变量只在这个文件中有效(从声明的地方到文件结束)
对局部变量的修饰是指这个变量在这段代码加载到内存到失效这段时间内它的值是不随函数调用结束而改变的。
三、关于内存布局
全局静态变量
内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
局部静态变量
内存中的位置:静态存储区
初始化:未经初始化的局部静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
Static修饰的函数:
在函数的返回类型前加上关键字static,函数就被定义成为静态函数。
函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件中可见,不能被其他文件所用。