C中static函数的作用

明亮 posted @ 2011年3月22日 21:03 in 【科学综合】 , 1568 阅读
本文发表于:http://fml927.is-programmer.com

1、函数之外的变量就是全局变量,这个想法正确吗?
答: 在C中,完全正确。只不过按有没有加static修饰可以分为静态全局变量和一般全局变量两种。
2、 如果在全局变量的前面加上static 会有什么用?
答:在C中,静态全局变量意味着两个方面。一、在生命期方面,它与一般全局变量一样,是与整个程序共存亡的;二、在可见性方面,它只在定义它的那个编译单元中可见。比如说,你在testA.c中定义了一个静态全局变量x: static int x;则你只能在testA.c的函数中引用它,在另一个文件testB.c中如果想用它的话:extern int x;然后再某个函数中使用x,则一般编译器在连接阶段会报错说找不到x这个符号。
3、 如果在函数的前面加上static 会有什么用?
答:与静态全局变量差不多。简单地说,在testA.c中定义的静态函数:static void A(void)是不能在testB.c的函数中调用的,如果一定要这样的话编译器连接时会报错的。
static的用途:一般对那些非接口函数和确定外部不使用的全局变量加上static限制,可以保证不会被其它编译单元非法使用,同时也可以避免与别的编译单元中的同名符号冲突。在驱动程序中用的较多。

  • 无匹配
  • 无匹配
pingf 说:
2011年3月23日 12:57

static函数外更好的理解方式是"文件中的"其访问返回收文件的限制

pingf 说:
2011年3月23日 12:57

其访问范围受文件的限制


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter