Chinaunix首页 | 论坛 | 博客
  • 博客访问: 894800
  • 博文数量: 60
  • 博客积分: 1458
  • 博客等级: 中尉
  • 技术积分: 1373
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-24 12:50
个人简介

不积硅步无以至千里

文章分类

全部博文(60)

分类: C/C++

2012-09-19 17:15:09

C语言中static关键字可以用于修饰全局变量、局部变量和函数,在使用static对以上三者进行修饰时,它们与普通全局变量、局部变量和函数的区别如下:

static修饰全局变量与普通全局变量
使用static修饰的全局变量不可以在同一工程的其他文件中被使用,举例如下:
如果变量a为普通全局变量,那么可以在b.c文件中通过使用extern关键字来让int a在b.c中可用;

  1. /*  a.c  */
  2. int a;
  3. /*  b.c  */
  4. extern int a;
如果在a.c中对全局变量a使用了static关键字,则不能在其他文件中使用此变量。

  1. /* a.c */
  2. static int a;

  3. /* b.c */
  4. extern int a;  //错误做法


static局部变量和普通局部变量

static局部变量存在于静态内存区,普通全局变量存在于栈区;static局部变量在整个程序运行结束之后才会消亡,而普通全局变量在其所在语句执行结束之后即消亡。对于静态局部变量,如果没有进行初始化,那么整形会默认初始化为0,字符默认初始化为'\0',静态局部变量在程序运行中只会进行一次初始化。

static函数与普通函数的区别
使用static修饰的函数,不能在同一工程的其他文件中被使用,跟static全局变量类似。

阅读(3115) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~