由于本人近些日高强度的笔试题训练和C语言学习,备受摧残。作为一个小白有太多的内容不会与不了解。不过通过一些努力。还是对于有关C语言中的数据存储类型有了一些拙见。
主要有如下的四种存储类型分别举例来谈:
auto
几乎平常的定义的数据前面都有这个单词,为什么他的存在感不高呢,原因是在大多数情况下它都是可省的,不出现在代码中。虽然看不见但是他也是在默默为我们背负了太多。当定义的变量是局部变量时,一旦程序运行超过当前的作用域时,则此变量就被隐藏或者自动释放了,主要时在栈空间上的操作。
static 静态变量
静态变量的声明。此种变量一旦被声明,就像冬日的暖气,夏日的空调可以说是陪伴你走过每一个艰难困苦的日子。所以静态变量在程序第一次给他赋值以后,即使变量所在的函数实行完它也不会被释放(风里雨里我一直陪你)。他的生命周期是整个程序的运行周期。
不难发现在某些功能与作用上,它与全局变量有些相似。其实二者区别也有不少
普通的全局变量,在所用的当前文件中可以被一直使用,而且其他文件也可以利用extern关键字进行引用并使用。如果我们将全局变量使用static声明他就也只能给本文件内的程序使用了。
static说到底它主要是为你定义的变量无论是全局还是普通变量“提升档次”,如果你是一个不起眼的可怜普通变量那么把其变成“人上人”。除非公司黄了要不你就一直领工资。如果你本来就是“多面手”,有一身才识没有落脚之地。那么就为其提供一个“住所”,物尽其用。
register 寄存器变量
要求编译器尽可能的把变量存储到CPU的内部寄存器当中,避免使用内存寻址的方式来访问数据目的是提高编译效率。但是呢也仅仅到暗示的程度,就像快递不到,你怒火中烧联系商家要求他们催促快递或者打电话给快递公司催促。一般得到的回复都是催促了请您耐心等待。其实来讲你的快递在卡车里,压根没人催促。难道打电话给司机加班加点的跑高速吗。不现实。所以寄存器当收到暗示的时候也是一样的。如果寄存器资源有限,不能完成“暗示”的操作,系统就不会满足你的需求。一碗register变量存取速度比内存快很多,在单片机和一些系统库文件中使用较多。
extern 外部变量
告知编译器你所需要的变量,在其他文件中,如果你需要调用请前往对应文件中调用。
总结:
各类声明各有各的用处,根据编程需要去选择需要的情况去使用
感谢华清远见让我快速熟知C语言,了解其中的奥秘。
未来会更新更多内容....