C语言学习记录:static存储类别说明符

static:块作用域、无链接、静态存储期。

C变量有三种链接属性:外部链接、内部链接、无链接。

外部链接变量可以在多文件程序中使用。

内部链接变量只能在一个翻译单元中使用。

“内部链接的文件作用域”简称“文件作用域”

“外部链接的文件作用域”简称“全局作用域”、“程序作用域”

例子:

int a = 1;        //文件作用域、外部链接
static int b = 2; //文件作用域、内部链接    //静态全局变量

static:使该变量只在这个源文件中可用,称之为全局静态变量,全局静态变量就是静态全局变量。

该文件和同一程序的其他文件都可以使用变量 a 。但是,变量 b 属于文件私有,该文件中任意函数都可以使用它。

静态变量:静态意指该变量在内存中原地不动,并非其值不变。

在程序离开它所在程序时,这些变量不会消失。具有静态存储期。计算机在多次函数调用之间会记录它的值。

例子:

void print_1(void);

int main(void)
{
    for(i=1 ; i<=3 ; i++)
        print_1(void);
}


void print_1(void);
{
    static a = 1;
    printf("a = %d\n",a++);
}

输出:

a = 1

a = 2

a = 3

 可以看出:a 只被初始化了一次。

实际上来说,a 已经不属于print_1()了。因为静态变量和外部变量在程序被载入内存的时候已经执行完毕。这条声明在print_1()函数中只是说明只有print_1()函数才能看到该变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值