码迷,mamicode.com
首页 > 其他好文 > 详细

C中Static的作用

时间:2015-03-19 23:24:45      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

在C中定义一个变量将意味什么?

1、规定变量的取值范围。
2、规定变量的操作
3、规定变量的作用域(或者生命周期、或者访问控制)
4、规定了变量的存储方式(或者存储格式)。

 

 

在纯C中Static有两个作用(不考虑C++以及二则混合使用):

1、Static修饰局部变量:该变量能在所定义的函数中共享(参考例一)。

2、Static修饰全局变量或函数:该变量或函数只在所定义的文件中可见(参考例一)。

 

例一:

void foo(void)
{
static int i = 10; int j = 10; i += 1; j += 1; printf("i = [%d], j = [%d]\n",i,j); } int main(int argc, char *argv[]) { int i ; for (i = 0; i < 10; i++) foo(); return 0; }

output:

i = [11], j = [11]
i = [12], j = [11]
i = [13], j = [11]
i = [14], j = [11]
i = [15], j = [11]
i = [16], j = [11]
i = [17], j = [11]
i = [18], j = [11]
i = [19], j = [11]
i = [20], j = [11]

 

例二:

foo.c

void foo1(void)
{
    static int i = 10;
           int j = 10;
           
    i += 1; 
    j += 1; 
    printf("i = [%d], j = [%d]\n",i,j);
}

static void foo2(void)
{
    static int i = 10;
           int j = 10;
           
    i += 1; 
    j += 1; 
    printf("i = [%d], j = [%d]\n",i,j);
}
 main.c

int
main(int argc, char *argv[]) { int i,j; for (i = 0; i < 10; i++) foo1(); for(j = 0; j < 10; j++) foo2(); // error: undefined reference to `foo2‘ // as main() can not acces the static mothed foo2() in foo.c file return 0; }

 

C中Static的作用

标签:

原文地址:http://www.cnblogs.com/freecodeX/p/4352051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!