** 今天为大家带来变量存储的详细教程**
变量
在编写C程序的过程中,我们常常会使用到变量。而基本的变量类型在前面的教程也已经讲到,在我们创建这些变量的时候,变量会被创建在内存。值得注意的是,变量在不同的内存中有着不同的特性,因此,我们可以通过一些关键字来规定变量在内存创建的位置。从而达到我们想要的结果。
在C语言中,变量在内存中的存储方式主要分为静态存储和动态存储。这两者的区别在于静态存储有固定的内存空间,而动态存储的内存空间是根据情况而定的。我们可以通过如下关键字来定义变量的存储位置。
- register 变量
在C语言中,我们可以通过 register 关键字标记变量,使用register关键字标记的变量会创建在寄存器中。但是在通常情况下,这样做没有什么作用,因为绝大多数的硬件的寄存器都不会占用内存空间。所以编译器会默认忽视 register 关键字。如果想有效地使用 register 关键字,就要通过一些汇编指令。但是不同硬件之间的寄存器又有所不同,因此 register 关键字的作用不大。
- auto 变量
在C语言中,我们可以通过 auto 关键字创建一个自动的局部变量。加上这个关键字的变量在每一次定义的时候都会自动创建出一个新的变量,并且会对这个新的变量重新初始化。例如:
void autoAdd() {
auto int autonum = 0;
autonum =autonum + 1;
cout << autonum << endl;
}
int main() {
autoAdd();
autoAdd();
}
从结果可以看到,调用两次函数后结果是同样的。因为auto修饰的变量每一次定义都会重新创建。
- extern 变量
在C语言中, extern 关键字可以声明程序中会用到但还未定义的变量。 extern 在分文件编写的工程中尤为重要。因为在实际开发中,我们都会分文件,分功能编写。不同的文件会用到相同的变量,因此, extern 关键字是十分重要的。
- static 变量
在C语言中, static 关键字可以将变量改为静态变量。静态变量会将数据存储在内存的全局区,全局区的数据在使用完成后释放。因此,静态变量可以始终保持其原本的值。
今天的内容就到这里,下期小编将带大家继续学习,各位看官老爷记得查阅哦~
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内存
+关注
关注
8文章
3023浏览量
74026 -
变量
+关注
关注
0文章
613浏览量
28364 -
C程序
+关注
关注
4文章
254浏览量
36030
发布评论请先 登录
相关推荐
变量的存储类型
变量的存储类型有4种,分别是static、external、register、auto,对于每一种存储类型,他们都有相应的使用方式和特点,下面就分别对这四种存储类型介绍一下:1.sta
发表于 01-10 15:05
6657局部变量存储地址异常 请问是什么原因?
程序Debug时进入子函数,控制台显示访问0x44xxxxxx地址时出错。仔细一看,原来是子函数的局部变量存储在这个0x44xxxxxx地址。查了datasheet,0x40000000
发表于 08-07 06:58
如何通过BLE发送一个变量存储在一个智能手机上?
你好,我是Gaurav。我想收集关于PSo4-042的LDR的读数。现在我可以在一个变量中收集数据。但我不知道我怎么把它送来。1、请告诉我如何通过BLE发送一个变量存储在一个智能手机上?谢谢您,Cyrkk.Access 02.Z
发表于 10-25 10:02
如何将变量存储到PIC24FF64GA002内存中
你好。我想把一些整数和字符串变量存储到特定的数据EEPROM地址中。我使用MPLAB X 3.40、XC16和PIC24FJ64 GA02。我试着在互联网上找到一些工作代码,但是没有。如果有人能给出一个例子/源代码或如何将变量
发表于 04-27 13:03
【STM32】STM32 变量存储在片内FLASH的指定位置
在这里以STM32L4R5为例(官方出的DEMO板),将变量存储在指定的片内FLASH地址(0x081F8000)。一、MDK Keil软件操作uint8_t version[12
发表于 12-02 11:06
•9次下载
评论