完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
变量是C语言最基础也是最核心的概念,对于初学C语言的同学来说变量的存储总是觉得比较混乱。这里对C的变量一个简单的小结,希望对大家有所帮助。
我们看到对变量的讲解的时候看到很多概念,属性,存储期,内部链接,外部链接,空链接,全局变量,局部变量,寄存器变量,静态变量等等。看起来很混乱,下面我们梳理一下。 其实我们再使用变量的时候大多关心的只有三个方面:变量的存在期,变量的类型,变量的作用域。 我们想一下变量的定义方法分为三部分: <存储类别> <变量的数据类型> <变量名> 分别理解一下 变量名。这个非常简单我们只要符合变量的命名规则就可以了,数字字母下划线组成,字母或下划线开头,不能为关键字。 变量的类型。这个也不难理解,我们知道有整形(int,long),字符型(char),浮点型(float,double),指针型(*)当然还有数组结构体等。相信这些我们再熟悉不过了。 存储类别。这个是我们今天讨论的重点。数据的存储类别决定了一个数据的存在期和作用域,我们先了解一下存在期和作用域这两个概念。 存在期:变量在内存中保存的时间。其实简单的说主要就两种情况,一是随函数的调用而起作用,随函数的结束而结束。二是作用于整个程序期间,直到程序结束。 作用域:变量能够有效作用的区域。这个简单的说有三种情况,一是只能作用在一个代码块内(或者说函数内),二是作用于整个文件(或者说程序)中,三是除了所在的文件别的文件也可以使用。 那么说了半天我们的存储类别是怎么决定存在期和作用域的呢。别急,就是通过下面几个关键字和变量定义所在的位置这两个条件的组合。 auto为存储类说明符,可以说明一个变量为自动变量。省略存数类型时默认就是auto修饰。所修饰的全局变量在静态区,局部变量在栈中。 register声明的变量属于寄存器存储类。所修饰的变量都在寄存器中保存。 static声明的变量属于静态存储类。所修饰的变量都在静态区。 外部变量的函数中使用extern关键字来再次声明。 我们把这几个关键字和位置的组合总结一下相信会清楚很多: 组合 存储期 作用域 初始值 auto +定义在函数内 和函数同步 函数内 不确定 auto +定义在函数外 和程序同步 本文件(程序)和外部文件 0 static+定义在函数内 和程序同步 函数内 0 static+定义在函数外 和程序同步 本文件(程序)内 0 register + 定义在函数内 和函数同步 函数内 不确定 说明一下,register只能修饰局部变量和形参,因为在寄存器内所以没有地址,也不可能是静态的。 extern :外部引用,当需要外部引用时使用,就不做过多阐述了。 这里只是讨论数据的存储,对关键字的一些其他功能就不做过多的说明了,不知道看了以上的表格对大家理解数据的存储期和作用域有没有一些帮助。 |
|
相关推荐
|
|
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11969 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:27 , Processed in 0.437898 second(s), Total 36, Slave 29 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号