【关键字 static】看这一篇就够了

       大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨‍💻,希望喜欢的小伙伴们,点个关注😘或者点个赞👍,如果觉得我的博客写的还不错,可以关注我~~,一起努力进步!!!💪💪当然如果有问题想问博主或者如果博客内容有问题,欢迎大家私聊或者在下方提出问题,我会积极的回复哦~🥰🥰🥰


 直接放本章的内容思维导图,方便读者提前浏览!

目录

🎺🎺修饰局部变量🎷🎷

🎸🎸修饰全局变量🎻🎻

🥁🥁修饰函数🎹🎹


🎺🎺修饰局部变量🎷🎷

不加static

#include<stdio.h>
void test()
{
    static int i = 0;//如果不加static的情况又是什么呢?
    i++;
    printf("%d ", i);
}
int main()
{
    int a = 0;
    for (a = 0; a < 10; a++)
    {
        test();
    }
   
    return 0;
}

        原因:因为int i变量是函数内部的局部变量,每次调用完函数后自动销毁,再次调用函数时重新生成并赋值为0再经过i++后输出为1,一直循环10该过程!

加static

在了解真正本质原因之前,我们要先学习一点额外知识

       原因:在计算机里面内存可以简单分为栈区,堆区,静态区,根据局部变量的特性可以推断出内存中大部分栈区的变量出属于它本身的生命周期范围就自动销毁了,同理也可推出静态区的变量,而关键字 static的作用就是改变了局部变量的储存位置,将局部变量从栈区拿出来放到了静态区!使静态局部变量出了作用域依然存在,到程序结束,生命周期才结束(main函数走到了return 0的时候),而且作用范围却没有改变!还在属于它原来的生命周期内(即函数test内部),而且只有第一次进入函数进行初始化赋值为0,其他次没有!


🎸🎸修饰全局变量🎻🎻

加static

不加static

 首先解释一下extern关键字:声明外部符号(多用于函数和全局变量)

       原因:这次static改变全局变量的外部连接属性(可以简单认为就是能与其他文件可以联系的一个属性),使其失去在其他文件能通过 extern来再次使用的功能!只能在其存在的源文件内部使用,不能在其他文件使用了(可以简单认为改变了作用域),但没有改变其储存位置和生命周期!

🥁🥁修饰函数🎹🎹

加上static

不加static

 原因:与全局变量相同!不再重复需叙述了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要慢慢变得优秀的向阳同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值