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

 

转载于:https://www.cnblogs.com/freecodeX/p/4352051.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值