c语言变量的存储,c语言变量的存储类别

kodinid 10 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言变量存储问题,于是小编就整理了4个相关介绍c语言变量的存储的解答,让我们一起看看吧。

  1. 单片机C语言设置变量存储在什么地方?
  2. C语言中,变量的隐含存储类别是什么?
  3. C语言中的,局部变量,存储在什么地方?
  4. 变量名储存在那里,变量的储存机制是什么?

单片机C语言设置变量存储在什么地方?

变量在RAM。

RAM是数据存储器,用来保存运行中的数据,掉电后数据消失。EEPROM跟FLASH都是程序存储器,保存程序代码跟不分配内存的,两者的区别在于写入方式EEPROM是电擦除、写入,FLASH就跟手机内存卡一样

C语言中,变量的隐含存储类别是什么?

函数的存储类型指的是其他文件模块可否访问,其类别可以是extern或static

c语言变量的存储,c语言变量的存储类别-第1张图片-安济编程网
图片来源网络,侵删)

static是指该函数只能被本源程序文件道中的模块访问。extern是指可被本源程序文件外的模块访问。

C语言中函数的存储类型隐含为版全局的,因此默认为extern。

函数内定义的变量,默权认作用域在本函数内,即其类型是auto。

c语言变量的存储,c语言变量的存储类别-第2张图片-安济编程网
(图片来源网络,侵删)

C语言中的,局部变量,存储在什么地方?

栈区,或者CPU通用寄存器中!!!

不知道你对CPU有过了解么???

CPU内核中会有一个叫做SP的寄存器,存放着栈顶地址,所有局部变量,和中间数据都在这里存放,在一个程序调用一个函数,SP指针会增加该堆栈用到的所有临时内存的长度,局部变量也在其中,在函数退出时SP还原到原来的值,这样被调用的函数用到的所有临时数据也都释放。。。

c语言变量的存储,c语言变量的存储类别-第3张图片-安济编程网
(图片来源网络,侵删)

当然也会存在CPU的通用寄存器中,因为有些CPU工作寄存器数量较多,如果局部变量不多,会直接放在寄存器内,而不是放到内存里,这样也提高了执行速度。。。

内存赋值需要取地址和写内存,本身步奏就多,而且内存操作没有寄存器块,所以如果工作寄存器够用,是会存在工作寄存器(根据编译器而定,当然编译器考虑的通常很周全,会让速度尽量快)

变量名储存在那里,变量的储存机制是什么?

变量代表存储单元,这是从代码到计算机实体的一个映射,好比我们大脑中香蕉的概念映射为现实中的香蕉。大脑执行“吃香蕉”,你就吃香蕉,计算机执行“a=1;”,就把1传送到a对应的存储单元。

编写源代码的时候,我们对变量进行声明,赋值和引用,都是使用一个变量名。而你编写的这段代码只是一个文本文件,必须通过编译器编译为机器代码并载入内存后才能被cpu执行,机器代码只有0和1,所以只能用0和1的序列代表存储单元,0和1的序列即存储单元的地址

可以看到,在源代码中,用变量名表示存储单元,在机器代码中,用地址表示,即编译器为变量分配存储单元,并用分得的存储单元的物理地址替代变量名,所以变量名只存在于源代码中,而源代码作为一个文件保存在硬盘里。

个人理解,欢迎大家批评指正,共同进步!

到此,以上就是小编对于c语言变量的存储的问题就介绍到这了,希望介绍关于c语言变量的存储的4点解答对大家有用。

标签: 变量 存储 寄存器