static修饰全局变量、局部变量及函数的用法

20430阅读 0评论2013-10-19 chenzhe805
分类:C/C++

1.static修饰全局变量

    在全局变量前加static,全局变量就被定义成为一个全局静态变量。
    特点如下:
   1)存储区:静态存储区没变(静态存储区在整个程序运行期间都存在);
   2)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。

     好处:   
    1)不会被其他文件所访问,修改;
    2)其他文件中可以使用相同名字的变量,不会发生冲突。

2.static修饰局部变量

    在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。
    特点如下:
  1)存储区:有栈变为静态存储区rw data,生存期为整个源程序,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,
        但不能使用它;
  
  2)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。

3. static修饰函数

     在函数的返回类型前加上关键字static,函数就被定义成为静态函数。
     函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用
     好处:
    1)其他文件中可以定义相同名字的函数,不会发生冲突
    2) 静态函数不能被其他文件所用。



上一篇:C程序段(代码段、数据段、BSS段以及堆栈)的详解
下一篇:关于进程上下文和中断上下文的理解