带你熟知关键字static用法——C语言(举例及通俗易懂)

18 篇文章 2 订阅
订阅专栏

引入

  首先我们看两个例子:

例1

#include<stdio.h>
void test()
{
    int i = 0;
	i++;
	printf("%d", i);
}
int main()
{
	int a = 0;
	while (a < 10)
	{
		test();
		a++;
	}
	return 0;
}

例2

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

   那么请问例1和例2的输出结果一样吗?答案是肯定不一样的。我们来看一下例1和例2分别输出的结果。

   为什么两个的输出结果不一样的,原因就是在static修饰了局部变量。接下来我们仔细分析一下原因。

一、static的简单认识

  1. 在c语言中,static是一个常见的关键字 可用来修饰。
  2. static可修饰局部变量、全局变量、自定义函数。

二、static的具体用法

1、static修饰局部变量

  从刚开始我们引入的两个例子可以发现,例2中static修饰了局部变量。而修饰局部变量有什么意义呢?首先我们先来了解一下局部变量、静态变量等在内存中所储存的位置。

                                       

  我们都知道,局部变量进去作用域时创建,出了作用域就自动释放了。这也是例1打印出来10的一的原因。但是当static修饰局部变量时,例2中的局部变量a就变成了静态变量,放在了静态区。放在静态区的数据创建后直到整个程序结束才释放。例2中当第一次调用完test函数后,第二次调用时,a此时的值为1,同时不会执行static int =0语句,而是直接执行a++语句。

总结:

  1. static修饰局部变量,局部变量变成静态变量,从而放在静态区。静态区的变量从创建后直到整个程序结束之后才释放。
  2. 通俗来讲,static修饰局部变量是改变了局部变量的生命周期,使其生命周期变长。
  3. 本质来讲,static修饰局部变量是改变了局部变量的储存位置。
  4. 注意static修饰局部变量,是改变了局部变量的生命周期,而不是作用域。  

 2、static修饰全局变量

  全局变量本身就具有的属性是外部链接属性。在不同的源文件中,要引用其他源文件的全局变量,只需要用extern关键字就行。但是当我们用static修饰全局变量后,在另一个源文件中引用时就会发现找不到外部符号,也就是不能再引用。如下图:

 总结:

  1. static修饰全局变量,使全局变量不在有外部连接属性。
  2. 通俗来讲,static修饰全局变量后,使全局变量只能在自己所在的源文件中使用,不能被其他源文件通过extern链接使用。
  3. static修饰全局变量使其作用域变小。

3、static修饰函数

  函数本身也是具有外部链接属性的。 在不同的源文件中,可以通过extern来引用其他源文件的函数。但是当static修饰函数时,其他源文件就不能过再引用。也就是使函数的外部链接属性变成了內部链接属性。

 总结:

  1. static修饰函数,使函数不在有外部连接属性。
  2. 通俗来讲,static修饰函数后,使函数只能在自己所在的源文件中使用,不能被其他源文件通过extern链接使用。

 结尾

  综上我们可以看出,static的作用还是挺大的。static修饰局部变量、全局变量、自定义函数时意义分别也是不同的。但是修饰全局变量、自定义函数时较为相似。

  希望以上内容对你有所帮助,感谢阅读。

《C程序设计语言》——C语言圣经
07-10
《C程序设计语言》(第2版新版)讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。 《C程序设计...
C语言Static关键字用法和详解(太细了!!!)
weixin_60804760的博客
11-01 5万+
static在不同的语言又有不同的使用方法,本文介绍的是staticC语言用法。从本质剖析却又通俗易懂,内容简单理解却十分重要。
static
lihaoweiV的专栏
07-13 1492
C语言程序可以看成由一系列外部对象构成,这些外部对象可能是变量或函数。而内部变量是指定义在函数内部的函数参数及变量。外部变量定义在函数之外,因此可以在许多函数使用。由于C语言不允许在一个函数定义其它函数,因此函数本身只能是“外部的”。       由于C语言代码是以文件为单位来组织的,在一个源程序所有源文件,一个外部变量或函数只能在某个文件定义一次,而其它文件可以通过extern声明来访
C语言关键字用法实例详解——static(二)
最新发布
戚晨夕的博客
09-06 1468
上一篇博客详细介绍了volatile关键字,这篇博客介绍一下static关键字
C语言-static用法
hmh520i的博客
06-04 8874
C语言-static用法
C语言static关键字详解
weixin_62604754的博客
01-26 1万+
static,英文意思静态的,作为C语言常用关键字一个很重要的关键字,其用法多样且比较难以理解,本篇博客将你详细了解掌握关键词static用法......
C语言static用法(修饰局部变量,修饰全局变量,修饰函数)
m0_53558236的博客
08-08 1万+
static 关键字有三种用法 static 修饰局部变量 - 静态局部变量 static 修饰全局变量 - 静态全局变量 static 修饰函数 - 静态函数 static 关键字的三种用法1. static 修饰局部变量 - 静态局部变量2. static 修饰全局变量 - 静态全局变量3. static 修饰函数 - 静态函数 1. static 修饰局部变量 - 静态局部变量 static可使得局部变量出了自己的范围也不会销毁,本质上是改变了局部变量的生命周期,但其作用域还是局部的。 详细点说,
C语言实现数独游戏的设计思路及程序框架.pdf
05-26
### 数独游戏设计思路及程序框架 #### 一、数独游戏概述 ...以上是使用C语言实现数独游戏的设计思路及程序框架的关键知识点。通过这一框架,你可以构建一个基本的数独游戏程序,进一步扩展和完善其功能。
c语言实现简单的易语言
12-31
大家熟知的易语言底层其实就是c语言来实现的,c语言的32个关键字加上一些常用的其他,使用#define这种宏定义来实现简单的汉语替换 1.下面就先打开VisualStudio,在头文件目录下新建一个 标识符.h 的文件,开始宏定义封装...
关于巧克力你不可不知的奥密——巧克力饮食行业ppt模板.rar
09-10
标题的“关于巧克力你不可不知的奥密——巧克力饮食行业ppt模板”暗示了这份压缩包内容聚焦于巧克力在饮食行业的应用和不为人知的知识。这可能是为一场关于巧克力的讲座、研讨会或商业演示准备的PPT模板。下面将...
三、熟知听力场景词——满分听力靠扎实 2021届高考英语二轮总复习课件.pptx
12-25
在准备高考英语听力的过程,了解并熟悉各类场景词汇至关重要,因为这将直接影响到考生的理解能力和答题准确性。以下是对【标题】和【描述】涉及的知识点的详细解释: 首先,我们要关注日常生活和天气相关的词汇...
staticc语言的作用_C语言关键字 static用法
weixin_39977776的博客
11-22 2132
接上文:C语言的32个关键字C语言 static 关键字的常见用法有三种:用于局部变量的修饰符;用于全局变量的修饰符;用于函数的修饰符。1、用于局部变量的修饰符当 static 用于修饰局部变量时,通常是在某个函数体内,只能在该函数内被调用。这样定义的变量通常被称为局部静态变量,它的值不会因为函数调用的结束而被清除,当函数再次被调用时,它的值是上一次调用结束后的值。如下面这段代码所示,变量 x 是...
[深度解剖C语言] --关键字 static
CSDN博客
01-16 7214
static ---最名不副实的关键字 目录 1.static修饰全局变量 2.static修饰函数 3.static修饰局部变量 static的作用: 1.static修饰全局变量 我们创建两个源文件,一个test.c,一个main.c 现在我们在test.c文件下定义一个全局变量 int g_val = 100; 我们在main.c下进行调用打印g_val我们能访问到g_val吗? 答案是可以的 如果给g_val加上static修饰我们还能再main.c下访问到吗?
C语言static用法详解
happy_child_的博客
04-19 3万+
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、static修饰变量1.修饰局部变量2.修饰全局变量二、static修饰函数总结 前言 static关键字不仅可以用来修饰变量,还可以用来修饰函数。在使用static关键字修饰变量时,我们称此变量为静态变量。静态变量的存储方式与全局变量一样,都是静态存储方式。静态变量属于静态存储方式,属于静态存储方式的变量却不一定就是静态变量。 提示:以下是本篇文章正文内容,下面案例可供参考 一、static修饰变量 1.修饰局部变量.
C语言static用法(超级详细)
云小逸的博客
04-15 9万+
static static 一般用于修饰局部变量,全局变量,函数; (1)static修饰局部变量: (2).static修饰全局变量 (3).static修饰函数
c语言static关键字用法详解
热门推荐
guotianqing的博客
04-05 68万+
概述 static关键字c语言比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。 但是对于c语言初学者,static由于使用灵活,并不容易掌握。本文就staticc语言的应用进行总结,供参考使用。错漏之处,请不吝指正。 在程序使用static 变量 1. 局部变量 普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰...
C语言 static 的使用(第2篇)
weixin_45641816的博客
09-24 9301
C语言 static 的使用
C语言static
M_L_J的博客
04-11 2320
static 的最主要功能是隐藏,其次因为 static 变量存放在静态存储区,所以它具备持久性和默认值0。
c语言static三种用法
2301_78261635的博客
07-13 2064
c语言学习:static的三种用法
写文章

热门文章

  • 第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解 27945
  • 【计算机网络】TCP三次握手四次挥手(超级详细) 12697
  • 【计算机网络】HTTP协议详解(举例解释,超级详细) 12716
  • new和delete用法详解 10432
  • 带你熟知关键字static用法——C语言(举例及通俗易懂) 8071

分类专栏

  • Redis 10篇
  • 实战项目 3篇
  • Docker 3篇
  • MySQL 12篇
  • Linux从入门到精通 28篇
  • 计算机网络 6篇
  • 算法与竞赛 14篇
  • 高频面试问题 5篇
  • C 18篇
  • 综合其他 2篇
  • 数据结构 15篇
  • C++ 21篇

最新评论

  • [MySQL] MySQL中的事物

    理工小羊: 事务不是事物,我也是有点小醉,竟然这么多人看,都没人指出,表情包

  • 【C++】多态(举例+详解,超级详细)

    小怪116: 实际上,当delete p2执行时(其中p2是Person*类型但指向Student对象),如果Person类没有虚析构函数,则只会调用Person的析构函数,这可能会导致资源泄漏(如果Student类有额外的资源需要清理)。但是,这并不意味着p2只指向了Student对象的“父类部分”,而是整个Student对象都被p2所指向,只是由于析构函数不是虚的,所以不会调用Student的析构函数。

  • Redis中的哨兵(Sentinel)

    叶北辰CHINA: 巨佬啊,C嘎嘎和linux直接无缝衔接

  • 【Linux从入门到精通】信号量(信号量的原理与相关操作接口)详解

    竹叶风轻敲: 这个和linux的信号量好像不一样

  • Redis中的持久化详解

    七月J: 写的很全,很详细,推荐

最新文章

  • Redis中的哨兵(Sentinel)
  • Redis分布式系统中的主从复制
  • Redis中的持久化详解
2024年13篇
2023年99篇
2022年19篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ggggggtm

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

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

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

打赏作者

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

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢的雕塑衢州环保玻璃钢雕塑玻璃钢花盆的制作方法河北开业商场美陈供货商广东树脂玻璃钢雕塑工艺植物玻璃钢雕塑施工方案商场 美陈 策划书萍乡定制玻璃钢雕塑文山市玻璃钢雕塑设计怎么样濮阳景观玻璃钢卡通雕塑安阳玻璃钢泡沫雕塑生产洛阳玻璃钢雕塑制作2019商场春季美陈滕州气球商场美陈商场美陈搭建合同山东玻璃钢雕塑摆件多少钱南岗玻璃钢雕塑厂应城玻璃钢雕塑虹口玻璃钢雕塑工程东莞公园玻璃钢雕塑公司福建园林玻璃钢雕塑报价透光玻璃钢雕塑生产厂家湖北省黄石市玻璃钢动物雕塑厂通用玻璃钢雕塑厂家供应常用玻璃钢花盆市场上城区玻璃钢金属雕塑方案铜陵定制玻璃钢雕塑制作玻璃钢卡通雕塑可信赖定制玻璃钢雕塑高性价比的选择龙泉玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化