当前位置:首页 » 《资源分享》 » 正文

【C语言】 Static关键字的用法和详解(太细了!!!)

11 人参与  2024年03月21日 13:02  分类 : 《资源分享》  评论

点击全文阅读


文章目录

目录

前言

一、static是什么

二、static的用法

1.修饰局部变量

2.修饰全局变量

         3.修饰函数

总结


前言

  static在不同的语言中又有不同的使用方法,本文介绍的是static在C语言当中的用法。


一、static是什么

  static在C语言中是关键字,中文直译过来是“静态的”,static关键字在C语言中主要是用来修饰变量和函数。

二、static的用法

1.修饰局部变量

  ——称为静态局部变量

static修饰局部变量时,会改变局部变量的存储位置,从而使得局部变量的生命周期变长。

  我们用一段代码来进行详解:

void test(){int x = 0;x++;printf("%d ", x);}int main(){int i = 0;while (i < 10){test();i++;}return 0;}

  这段代码中每次调用test()函数时创建局部变量x赋值为0,每次局部变量x出了test()函数后都会自行销毁。

  所以可以很容易得到输出结果为:1 1 1 1 1 1 1 1 1 1


  接着我们用上static关键字来修饰test()函数中的局部变量x:

void test(){static int x = 0;x++;printf("%d ", x);}int main(){int i = 0;while (i < 10){test();i++;}return 0;}

  输出结果变成了:1 2 3 4 5 6 7 8 9 10

  原因是static修饰了局部变量x,令局部变量x变成静态的,使得每次test()函数结束时局部变量x都不销毁,再次进入test()函数时则保留原有数值运行,因此x++数值越来越大。

其本质是:

  普通的局部变量创建后是放在栈区中,这种局部变量进入作用域时创建,出了作用域就销毁;

  但static修饰后的局部变量则放在静态区中,它改变了局部变量的存储位置,从而使得变量的生命周期延长,延长至程序结束才销毁。

注意:static修饰局部变量只改变生命周期,不改变作用域!


2.修饰全局变量

  ——称为静态全局变量

  static修饰全局变量时,会改变全局变量的链接属性,从而使得全局变量的作用域变小。

  这段话什么意思呢,先来简单说说全局变量

  全局变量的作用域十分的广,只要在一个源文件中定义后,这个程序中的所有源文件、对象以及函数都可以调用,生命周期更是贯穿整个程序。文件中的全局变量想要被另一个文件使用时就需要进行外部声明(以下用extern关键字进行声明)。

  接着我们用代码进行解析:

  全局变量x在自己的文件内可以直接使用。

  但当全局变量在另一个文件内未进行外部声明就想直接用时会出现未定义的错误:

   此时只要使用extern关键字声明一下即可:

   接着我们进入正题,当我们用static修饰全局变量x后:

 

 

  会发现生成错误,无法解析外部符号x,全局变量x不能被test.c文件调用了。所以我们可以很容易看出static修饰后让全局变量x的作用域变小了,令全局变量x无法被其他文件调用。

其本质是:

    全局变量本身是具有外部链接属性的,在A文件中定义的全局变量,在B文件中可以通过【链接】来使用;

    但如果全局变量被static修饰,那这个外部链接属性就会被修改成内部链接属性,此时这个全局变量就只能在自己的源文件中使用;

3.修饰函数

  ——称为静态函数

  static对函数的修饰与修饰全局变量十分相似,修饰函数时会改变函数的链接属性,从而使得函数的作用域变小。

  我们直接上代码:

  函数在另一个文件中使用时同样需要声明。

  但当函数被static修饰后:

  会发现Add函数无法被解析了,static修饰后Add函数的作用域变小了。

本质和全局变量很像:

  函数本身也是有外部链接属性的;

  被static修饰后,函数的外部链接属性被修改成内部链接属性,使得这个函数只能在自己的源文件内被使用,因此函数的作用域就变小了。


总结

  以上就是要说的内容,本文仅仅简单介绍了static在C语言的使用,static在其他语言中还有更多的使用方法。本文是小编的第一篇知识总结,如有不足的地方欢迎大佬们在评论区指出。也还望各位觉得有用的话一键三连+关注,谢谢!


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/82903.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • (此去经年无故人)南初陆南城:结局+番外精品选集起点章节+阅读即将发布预订
  • 沈凝夏叶晚怡附加完整在线阅读(归雁不栖故人枝)最近更新列表
  • 剧情人物是时初,白浩雄的玄幻言情小说《召诸神,踏万界,天命帝女逆乾坤》,由网络作家&ldquo;海鸥&rdquo;所著,情节扣人心弦,本站TXT全本,欢迎阅读!本书共计381345字,185章节,:结局+番外免费品鉴:结局+番外评价五颗星
  • 凤青禾,江明远,***枢小说(别人修仙我捡漏,卷王们破防了)最近更新(凤青禾,江明远,***枢)整本无套路阅读
  • 薛梨小说无删减+后续(曾经亲情似草芥)畅享阅读
  • 沈南栀小说(穿越时空,我要修补时空裂缝)章节目录+起点章节(沈南栀)全篇清爽版在线
  • 未婚妻被巨蟒缠身,我该吃就吃该喝就喝前言+后续_阿豪林月周然后续+番外_小说后续在线阅读_无删减免费完结_
  • 陆骁,陆本初小说(陆骁,陆本初)(癫!睁眼穿成老太太挥鞭***逆子)前传+阅读全新作品预订
  • 姐姐含冤而死后冥王另娶,我杀穿整个地府在线阅读_阎罗殿殷红别提一口气完结_小说后续在线阅读_无删减免费完结_
  • (书荒必看)毒后重生:疯王的神医小娇妻沈清歌,萧绝:+后续热血十足
  • 重生后我和太监联手灭了敌国喻辰,林雪续集(重生后我和太监联手灭了敌国)终极反转(喻辰,林雪)全篇一口气阅读
  • 我不做灵媒后,自称灵媒摆渡人的养妹害怕了内容精选_苏晓霍老阿姐无广告_小说后续在线阅读_无删减免费完结_

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1