当前位置: 首页 > news >正文

大连网站建设仟亿科技广告联盟接广告

大连网站建设仟亿科技,广告联盟接广告,深圳哪家做网站最好,ozon电商平台如何入驻C语言中static的用法(超级详细版) static是C语言中的关键字。 static是静态的意思,可以用来: 1.修饰局部变量 2.修饰全局变量 3.修饰函数 在学习static之前,我们要先了解一下作用域和生命周期。 作用域和生命周期 作…

C语言中static的用法(超级详细版)

static是C语言中的关键字。
static是静态的意思,可以用来:
1.修饰局部变量
2.修饰全局变量
3.修饰函数

在学习static之前,我们要先了解一下作用域和生命周期。

作用域和生命周期

作⽤域(scope)是程序设计概念,通常来说,⼀段程序代码中所⽤到的名字并不总是有效(可⽤)的,⽽限定这个名字的可⽤性的代码范围就是这个名字的作⽤域。

  1. 局部变量的作⽤域是变量所在的局部范围。
  2. 全局变量的作⽤域是整个⼯程(项⽬)。

⽣命周期指的是变量的创建(申请内存)到变量的销毁(收回内存)之间的⼀个时间段。

  1. 局部变量的⽣命周期是:进⼊作⽤域变量创建,⽣命周期开始,出作⽤域⽣命周期结束。
  2. 全局变量的⽣命周期是:整个程序的⽣命周期。

下面举一个简单的例子解释一下局部变量和全局变量的作用域、生命周期。

#include<stdio.h>
int a =1;//a为全局变量,a的作用域是整个程序,a的生命周期为整个程序的生命周期
int main()
{if (a > 0) {int c = 200;//创建局部变量c,生命周期开始printf("%d", c);}//{}之间的为局部变量c的作用域,出作⽤域⽣命周期结束else {int b = 100;//创建局部变量bprintf("%d", b);}//{}之间的为局部变量b的作用域,出作⽤域⽣命周期结束return 0;
}

相信大家对作用域和生命周期已经有了很好的了解,现在步入正题!

static修饰局部变量

同样,最开始为大家举一个简单的例子,通过最直观的代码了解static。

#include<stdio.h>void test()
{int a = 0;//每一次进入test函数,a都会被重新赋值a++;//由于test函数没有返回值,所以a++的计算对主函数的循环没有影响printf("%d", a);
}
int main()
{int a = 0;for (a = 0; a < 5; a++){test();}return 0;
}

在这里插入图片描述
上述代码的test函数中的局部变量a是每次进⼊test函数先创建变量(⽣命周期开始)并赋值为0,然后
++,再打印,出函数的时候变量⽣命周期将要结束(释放内存)。

那么,现在我想要a的值有累加的效果,我应该怎样修改上述代码呢?
此时就用到了static。

#include<stdio.h>void test()
{static int a = 0;//直接在int前加上statica++;printf("%d", a);
}
int main()
{int a = 0;for (a = 0; a < 5; a++){test();}return 0;
}

在这里插入图片描述

代码中,我们从输出结果来看,i的值有累加的效果,其实test函数中的a创建好后,出函数的时候是
不会销毁的,重新进⼊函数也就不会重新创建变量,直接上次累积的数值继续计算。

结论:static修饰局部变量改变了变量的⽣命周期,⽣命周期改变的本质是改变了变量的存储类型,本
来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。存储在静态区的变
量和全局变量是⼀样的,⽣命周期就和程序的⽣命周期⼀样了,只有程序结束,变量才销毁,内存才
回收。但是作⽤域不变的。

在这里插入图片描述

static修饰全局变量

在这里插入图片描述

本质原因是全局变量默认是具有外部链接属性的,在外部的⽂件中想使⽤,只要适当的声明就可以使
⽤;但是全局变量被 static 修饰之后,外部链接属性就变成了内部链接属性,只能在⾃⼰所在的源
⽂件内部使⽤了,其他源⽂件,即使声明了,也是⽆法正常使⽤的。

static修饰函数

其实 static 修饰函数和 static 修饰全局变量是⼀模⼀样的,⼀个函数在整个⼯程都可以使⽤,
被static修饰后,只能在本⽂件内部使⽤,其他⽂件⽆法正常的链接使⽤了。
所以static修饰函数在这里我就不在赘述了,直接上代码!
在这里插入图片描述
在这里插入图片描述

最后,希望这篇文章对你有所帮助哦!!!

http://www.hkea.cn/news/250637/

相关文章:

  • 做网站都是用源码么免费注册个人网站不花钱
  • 建设网站需要两种服务支持官网设计公司
  • 安庆做网站seo建站收费地震
  • 绵阳住房和城市建设局网站官网seo排名优化联系13火星软件
  • 网站开发建设费用关键词异地排名查询
  • 网站建设企业电话广州优化疫情防控举措
  • 重庆模板网站建设百度网站域名注册
  • 安徽建设厅网站地址网络广告推广方式
  • 门户网站内容管理建设方案企业关键词优化推荐
  • 北京网站建设公司飞沐小学生一分钟新闻播报
  • 企业网站建设申请域名seo赚钱
  • 2017网站开发前景百度网盘资源链接入口
  • 平面广告设计主题seo是怎么优化上去
  • 正规网站制作公司哪家好四年级写一小段新闻
  • 济南网站建设安卓版快手seo
  • java开发兼职网站开发线上推广平台
  • 北京网站建设开发公司网站自动收录
  • wordpress最多多少用户seo基础知识
  • 湘潭做网站 去磐石网络b站推出的短视频app哪个好
  • 宿迁做网站的公司有人看片吗免费观看视频
  • 什么人最需要建设网站淘宝运营一般要学多久
  • 海南网站优化东莞免费建站公司
  • 传播型网站建设优势有哪些推广类软文
  • 如何在百度做网站推广赚钱的软件
  • c# 网站开发教程周口网站seo
  • 湘西网站建设帮人推广注册app的平台
  • 切图做网站web制作网站的模板
  • 网站的做网站公司哪家好网络优化大师app
  • 国内外包网站今日头条(官方版本)
  • 外网建筑设计网站线上渠道推广有哪些方式