您的位置:首页 > 编程语言 > C语言/C++

C语言 static 用法总结

2014-10-18 12:42 387 查看

1、static 函数:

只能被模块内的函数调用,不能被模块外的函数调用。模块可以理解为当前.c文件。

静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。(这句话有待验证)

2、static全局变量:

2.1 作用范围: 只能在当前.c文件中使用。

2.2 存储位置: 静态数据区。

2.3 生命周期:整个程序运行期间

2.4 定义 及 初始化 :

static全局变量可以显示初始化

static int s_param = 10;

也可以省去 “= 10”,让系统默认初始化

static int s_param;   //默认初始化

int main(int argc, char* argv[])
{
printf("s_param = [%d] \n", s_param);  //0
return 0;
}

其实global全局变量也具备这一属性,因为全局变量存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。但是,默认初始化这种方法并不推荐,推荐使用显示初始化!

2.5 比较

作用域存储生命周期
static全局变量当前.c文件静态数据区整个程序运行期间
全局变量整个源程序静态数据区整个程序运行期间



3、static局部变量:

3.1 作用范围:当前函数体。

3.2 存储位置: 静态数据区。

3.3 生命周期:整个程序运行期间

3.4 定义及初始化:

static局部变量可以显示初始化,也可以由系统默认初始化。

static int s_local;  //默认初始化
static int s_local_param = 1;  //显示初始化,推荐使用

3.5 比较

作用域存储生命周期
static局部变量当前函数体静态数据区

整个程序运行期间
普通局部变量当前函数体

该函数执行过程中,从定义开始到函数执行完即被释放



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: