C中Static的作用

在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; }

 

posted @ 2015-03-19 22:57  freecodeX  阅读(194)  评论(0编辑  收藏  举报