首页 > 其他分享 >笔记-C语言中static作用

笔记-C语言中static作用

时间:2022-12-15 22:13:57浏览次数:74  
标签:函数 静态 局部变量 笔记 C语言 static 全局变量 变量

C语言中,static关键词可以用来修饰变量和函数,用static关键词修饰的变量成为静态变量

static关键词的作用主要包括3个方面:

1.隐藏

一个项目中往往包括多个.c文件,所有未加static关键词前缀的全局变量和函数都具有全局可见性,通俗的说main.c中能够访问其他.c文件中的函数和变量。

如果加了static,则就会对其他源文件隐藏,那么main.c就无法访问其他.c文件中的函数和变量,在此基础之上,基于这一个特性,可以在main.c中定义同名函数和变量。

对于static修饰的函数来说,这是主要的作用。对于修饰的变量还有其他的两个作用。

2.保持变量内容持久

静态变量的储存方式和全局变量都是静态储存方式,有时候我们希望函数中的局部变量在函数调用后其变量值继续保持,这时候可以将局部变量加static关键词定义为静态局部变量,因此局部变量的位置将从栈存放变为静态储存区存放,但是静态局部变量只在声明的函数块中可用。最常用的就是用于在函数中做计数。

因此局部变量的一般使用场景为:

  • 需要保留函数上一次调用结束的值;
  • 初始化后变量只会被引用而不改变值,用静态局部变量可以避免重复赋值。

3. 默认初始化为0

静态数据区中,所有字节默认值为0x00,静态变量和全局变量都一样。

4.参考资料

标签:函数,静态,局部变量,笔记,C语言,static,全局变量,变量
From: https://www.cnblogs.com/tongwumiracle/p/16986109.html

相关文章

  • 程序设计模式急救笔记
    打完游戏发现考试内容一点没看,紧急抢救,精神状态不甚正常,慎读。例子有的不是很好,为了考试的时候抄个UML图方便罢了。0.UML图1.关联关系类A用到了类B,A->B类A用到了类B......
  • C语言的导数和积分
    用C进行导数和积分的运算进行求导设一个dx,利用f(x)-f(x-dx)/dx或f(x)-f(x+dx)/dx进行计算。floatqd(floatx){ floatdx=0.01,y; y1=(sin(x)+cos(x)-sin(x-dx)-cos......
  • Isolation forest阅读笔记
    IForest所基于的假设异常是由较少实例组成的少数派它们拥有与正常实例差别较大的属性换句话说,异常是少而不同的(fewanddifferent),这使得它们比正常的点更容易被孤立......
  • T-SQL语言基础 - 第一章笔记
    sql逻辑顺序1. FROM 指定要查询的表名,以及对这些表进行操作的表运算符2.WHERE指定一个谓词或逻辑表达式,从而过滤由FROM阶段返回的行。对查询性能有重要的影响,在......
  • c/c++学习过程中的知识点记录:学习笔记(一)
    学习的过程就是一个一个小的知识点累加的过程,学会一个就在此记录一个。时间长了就知道的就多了,还可以用来温习自己学过的知识。一、return语句不可返回栈指针(指向栈内存的......
  • 详解物理层-传输介质 & 物理层设备【王道计算机网络笔记】
    传输介质传输介质也称传输媒体/传输媒介,它就是数据传输系统中发送设备和接受设备之间的物理通路信道是发送设备和接受设备之间的逻辑通路传输媒体并不是物理层。传输媒......
  • C语言--指针
    什么是地址? 内存单元的编号从0开始的非负整数什么是指针?指针就是地址,地址就是指针指针是内存地址,指针变量是用来存放内存地址的变量.指针和指针变量是两个不同的......
  • Python学习笔记--布尔类型和比较运算符、if判断语句以及相关案例的实现
    布尔类型和比较运算符代码:结果:主要有以下几类:注意:bool类型的真假表示开头必须大写,例如:True和False而要是想要得到布尔类型,除了直接定义,还可以通过比较运算得到布尔......
  • 极光笔记 | 以静制动:行为触发营销助力用户转化
    01、营销人,你是否饱受困扰?作为营销人的你,从996到007,每天从早忙到晚,但还是没办法把访客转化成客户?作为营销人的你,想通过APP通知、短信、邮件、公众号消息等方式,把所有能想......
  • 惠普笔记本电脑更新BISO时,Firmware Updete 100%后卡住
    一般来说只会卡5-10分钟,耐心等待半小时后应该会好,如果半小时后还是没有反应,可按如下步骤尝试:1、长按开机键关机。2、轻按开机键开机。3、若是步骤2无效,拔掉电源线,以及所......