干货分享:C语言有哪些存储类型?学编程的你应该要知道这些知识沐歌爱编程

存储类定义C程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面介绍C程序中可用的存储类。

auto称为自动变量。

{

intmount;

autointmonth;

}

上面的实例定义了两个带有相同存储类的变量,auto只能用在函数内,即auto只能修饰局部变量。

局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进行说明,当auto省略时,所有的非全程变量都被认为是局部变量,所以auto实际上从来不用。

局部变量在函数调用时自动产生,但不会自动初始化,随函数调用的结束,这个变量也就自动消失了,下次调用此函数时再自动产生,还要再赋值,退出时又自动消失。

static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。

1.静态局部变量

它与局部变量的区别在于:在函数退出时,这个变量始终存在,但不能被其它函数使用,当再次进入该函数时,将保存上次的结果。其它与局部变量一样。

2.静态全程变量

TurboC2.0允许将大型程序分成若干独立模块文件分别编译,然后将所有模块的目标文件连接在一起,从而提高编译速度,同时也便于软件的管理和维护。静态全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与全程变量的区别是:全程变量可以再说明为外部变(extern),被其它源文件使用,而静态全程变量却不能再被说明为外部的,即只能被所在的源文件使用。

static存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用static修饰局部变量可以在函数调用之间保持局部变量的值。

以下实例演示了static修饰全局变量和局部变量的应用:

实例

实例中count作为全局变量可以在函数内使用,thingy使用static修饰后,不会在每次调用时重置。

可能您现在还无法理解这个实例,因为我已经使用了函数和全局变量,这两个概念目前为止还没进行讲解。即使您现在不能完全理解,也没有关系,后续的章节我们会详细讲解。当上面的代码被编译和执行时,它会产生下列结果:

thingy为6,count为9

thingy为7,count为8

thingy为8,count为7

thingy为9,count为6

thingy为10,count为5

thingy为11,count为4

thingy为12,count为3

thingy为13,count为2

thingy为14,count为1

thingy为15,count为0

extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,还要被其它文件使用。因此,必须将全程变量通知每一个程序模块文件,此时可用extern来说明。

当您使用extern时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。

extern修饰符通常用于当有两个或多个文件共享相同的全局变量或函数的时候,如下所示:

第一个文件:main.c

#includeintcount;externvoidwrite_extern();intmain(){count=5;write_extern();}

第二个文件:support.c

#includeexternintcount;voidwrite_extern(void){printf("countis%d\n",count);}

$gccmain.csupport.c

这会产生a.out可执行程序,当程序被执行时,它会产生下列结果:

countis5

register称为寄存器变量。它只能用于整型和字符型变量。定义符register说明的变量被TurboC2.0存储在CPU的寄存器中,而不是象普通的变量那样存储在内存中,这样可以提高运算速度。但是TurboC2.0只允许同时定义两个寄存器变量,一旦超过两个,编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量来处理。因此,寄存器变量常用在同一变量名频繁出现的地方。

register存储类用于定义存储在寄存器中而不是RAM中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的'&'运算符(因为它没有内存位置)。

registerintmiles;

寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义'register'并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。

另外,寄存器变量只适用于局部变量和函数的形式参数,它属于auto型变量,因此,不能用作全程变量。定义一个整型寄存器变量可写成:registerinta;

THE END
1.干货品种大全干货食材有哪些常见干货制品选购详解→MAIGOO知识提起“干货”,大家想到最多的就属菌菇干货、海鲜干货了,其实干货食材远不止这些,像蔬菜干、干货类调料、杂粮、中药材、干果果脯等都是干货这一大家庭里的一员,那么到底干货有哪些?又该如何挑选干货?别急,下面maigoo小编为大家详细介绍常见的干货种类及其选购要点,助你挑选到好的干货制品。 蔬菜干货 干货蔬菜,就...https://m.maigoo.com/goomai/222146.html
2.干货店热销的十种干货分享干货店最值得买的十种产品→十大品牌网干货店热销的十种干货有哪些?杂粮类干货在健康饮食的浪潮中逐渐受到消费者的青睐。如红豆、绿豆、黑豆、薏米等,这些杂粮不仅营养价值高,而且具有多种保健功能。它们可以煮粥、炖汤,也可以搭配其他食材制作各种美食。 六、坚果类 坚果类干货因其丰富的营养和独特的口感而备受喜爱。如核桃、杏仁、腰果、开心果等,这些坚...https://www.cnpp.cn/focus/233356.html
3.干货踢脚线的种类有哪些?该如何选择? 木质踢脚线 木质踢脚线又可以分为实木踢脚线和多层踢脚线两类。顾名思义,实木踢脚线是纯实木制作而成,价格比较贵。多层踢脚线是由多层的木质压成,所以相对较便宜。他们在视觉上没太大差别,但是在每米价格上的差价却达到了20-40元。 优点:视觉效果好,安装方便。 缺点:不耐潮、对墙面平整度有要求...https://www.to8to.com/yezhuapp/t294432.html
4.抖音账号类型有哪些?个人抖音号和企业抖音的区别运营技巧自媒体抖音账号类型有哪些? 1.搞笑段子类,生活类 这一类账号接近于日常生活,带货也会显得比较自然,所以这类账号适合卖日用品、家居用品以及食品。购入后也需要按照之前的拍摄风格进行,如果不继续发表作品也可以直接采用直播的形式来进行带货。 2.干货知识类 这一类的账号适合于网络课程等知识付费项目选择,一般来说这样的账号...https://www.jb51.net/zimeiti/807197.html
5.干货分享VIE架构之下的协议类型有哪些?通过OPCO与WFOE达成的协议,OPCO授权WFOE全面独家地对乙方的经营活动负责,包括有权任免OPCO公司的董监高及其他公司治理事项。WFOE有权独家全面管理和处置OPCO的资产和现金流。 3.《资产许可协议》(Asset Licensing Agreement) 通过WFOE与OPCO达成的资产许可协议,WFOE向OPCO许可特定资产(通常包括知识产权),并收取使用费。协议...https://weibo.com/ttarticle/p/show?id=2309404787503017361467
6.干货包括哪些东西?三、海鲜干货都卖哪些东西? 主要是一些干海鲜制品,如烤鱼片,鱿鱼丝,鱿鱼片,蚬子干,干贝丁,虾干,鱼排,紫菜,鲍鱼干,淡干海参等等,一般超市里面都有这样的专柜你可以去参考。 四、海鲜干货类都卖哪些东西? 主要是一些干海鲜制品,如烤鱼片,鱿鱼丝,鱿鱼片,蚬子干,干贝丁,虾干,鱼排,紫菜,鲍鱼干,淡干海参等等,一般...https://www.lnky.net/gthq/64826.html
7.学生的认知风格类型有哪些教招考试干货学习风格的差异与教育学生存在哪些学习风格上的差异呢? 今天我们就来看看这部分的知识点 在教师招聘考试中是如何考察的吧~ 所谓学习风格,是指人们在学习时所具有或所偏爱的方式,能够表现出来不同学生的个人特色,因此是没有好坏之分的!请记住这是一个考判断题的点,比如判断:“沉思型的学生比冲动型的学生解决问题要好一些。”此外,这...https://blog.csdn.net/weixin_42221522/article/details/112418622
8.集装箱的种类有哪些集装箱的种类有哪些 1.干货集装箱(Dry Cargo Container) 也称杂货集装箱,这是一种通用的集装箱,用以装载除液体货、需要调节温度货物及特种货物以外的一般件杂货。这种集装箱使用范围非常广泛,常用的有20英尺和40英尺两种,其结构特点是常为封闭式,一般在一端或侧面设有箱门。https://m.66law.cn/ip/zs/287146.html
9.产品设计干货!5种消息通知设计的优缺点分析优设网操作区域:通知分为可点击类和不可点击类,当通知模块需要用户点击时,视觉上应该更加具象,如按钮、箭头,不要让用户产生思考。 图标图片:有意义的图像可以强化通知的内容,例如,如果你将收到的消息通知用户,你可以包含发件人的头像。 三、通知的类型 通知的模式根据不同的场景也会有不同类型,接下来将一一讲解这 5...https://www.uisdc.com/5-message-notification-design