关键字简述

首先,自己定义的变量名不能与关键字冲突

static关键字

static修饰局部变量

static修饰的局部变量叫做静态局部变量

我们用代码来解释这个static这个关键字

void test()
{
    int b = 1;
    b++;
    printf("b=%d\n",b);
}
#include <stdio.h>
int main()
{
    int a = 0;
    while (a < 5)
    {
        test();
        a++;
    }
    return 0;
}

 

 我们可以看到在没有static修饰的前提下,结果是5个b=2,因为局部变量的生命周期,就是在代码块内,出了代码块,变量就销毁了。

然后我们可以看下有static修饰的局部变量结果

void test()
{
    static int b = 1;
    b++;
    printf("b=%d\n",b);
}
#include <stdio.h>
int main()
{
    int a = 0;
    while (a < 5)
    {
        test();
        a++;
    }
    return 0;
}

 

 可以看到b的结果由2逐级向上加1

这是因为static修饰的局部变量延长了局部变量的生命周期,局部变量出了代码块就不会销毁

static修饰全局变量

我们知道全局变量的作用域在整个项目中都能使用,即便我们定义的全局变量与我们所引用的printf函数不在一个源文件中,我们也可以用extern(是用来声明外部源文件中的全局变量的)声明一下就可以使用了。

来看一下由static修饰的全局变量结果会是什么呢?

#include <stdio.h>
int main()
{
    extern int a;//extern 是用来声明外部变量的。
    printf("a=%d\n",a);//结果就是2023 加入static的结果是error
    //由static修饰的全局变量称为静态全局变量。缩短了全局变量的作用域,在另一个源文件中创建的静态 
    // 全局变量的作用域只能在所创建的源文件中。
    return 0;
}

 由此可见static修饰的全局变量缩短了全局变量的作用域

static修饰函数

static修饰函数改变了函数的链接属性,禁止了函数的外部链接属性

在外部源文件中的函数不能被extern声明了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值