⑴ c语言的基本变量存储类型的初值,以及作用范围.生存期的概念和关系
变量的存储类型是指变量在内存中的存储方式,分为静态存储和动态存储,表示了变量的生存期。
变量分类特性表存储方式存储类型说明符何处定义生存期作用域赋值前的值可赋初值类型动态存储自动变量 auto 寄存器变量 register 函数或复合语句内被调用时在定义它的函数或复合语句内不定基本类型int或char外部变量extern函数之外整个源程序整个源程序静态局部变量static 函数或复合语句内静态全局变量static 函数之外整个源程序在定义它的函数或复合语句内在定义它的源文件内0任何类型
⑵ C语言之什么是存储类型
四种变量存储类型。说明符如下:
auto static extern register
一、auto
auto称为自动变量。
局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进
行说明, 当auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上
从来不用。
二、static
static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。
1. 静态局部变量
它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它
函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样。
2. 静态全程变量
Turbo C将大型程序分成若干独立模块文件分别编译, 然后将所有模块
的目标文件连接在一起, 从而提高编译速度, 同时也便于软件的管理和维护。静态
全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与
全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用,
而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。
三、extern
extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要
被其它文件使用。因此, 必须将全程变量通知每一个程序模块文件, 此时可用
extern来说明。
四、register
register称为寄存器变量。
⑶ C语言中有哪些存储类型
c语言中的存储类型有auto, extern, register, static 这四种,存储类型说明了该变量要在进程的哪一个段中分配内存空间,可以为变量分配内存存储空间的有数据区、BBS区、栈区、堆区。
1. auto存储类型
auto只能用来标识局部变量的存储类型,对于局部变量,auto是默认的存储类型,不需要显示的指定。因此,auto标识的变量存储在栈区中。
2. extern存储类型
extern用来声明在当前文件中引用在当前项目中的其它文件中定义的全局变量。如果全局变量未被初始化,那么将被存在BBS区中,且在编译时,自动将其值赋值为0,如果已经被初始化,那么就被存在数据区中。全局变量,不管是否被初始化,其生命周期都是整个程序运行过程中,为了节省内存空间,在当前文件中使用extern来声明其它文件中定义的全局变量时,就不会再为其分配内存空间。
3. register存储类型
声明为register的变量在由内存调入到CPU寄存器后,则常驻在CPU的寄存器中,因此访问register变量将在很大程度上提高效率,因为省去了变量由内存调入到寄存器过程中的好几个指令周期。
4. static存储类型
被声明为静态类型的变量,无论是全局的还是局部的,都存储在数据区中,其生命周期为整个程序,如果是静态局部变量,其作用域为一对{}内,如果是静态全局变量,其作用域为当前文件。静态变量如果没有被初始化,则自动初始化为0。静态变量只能够初始化一次。
⑷ 中长尾常见的存储类型是哪三类
分类如下:
1、直连式存储:Direct-Attached Storage,简称DAS;
2、网络附加存储:Network-Attached Storage,简称NAS;
3、存储区域网络:Storage Area Network,简称SAN。
存储设备类型是指通过采用SCSI、FC、TCP/IP,ISCSI等接口类型、数据传输协议、以及不同数据存储介质的存储设备。常见的存储设备类型可为SCSI存储、NAS存储、FC存储、iSCSI存储和磁带存储。
⑸ 变量的存储类型
我们在程序中会经常定义一些变量来保存和处理数据。从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。
如果说变量的数据类型决定了对应内存的大小,那么存储类型则影响着对应内存的使用方式。所谓使用方式,具体说就是在什么时间、程序的什么地方可以使用变量,即变量的生命周期和作用域。
先了解一些基本常识。一、在程序运行时内存中有三个区域可以保存变量:静态存储区、栈(stack)和堆(heap)。二、根据变量定义的位置可分为全局变量(定义在函数体外的变量)和局部变量(定义在函数体内的变量,包括形参)。
所有的全局变量和静态局部变量(定义时使用关键字static)都保存在静态存储区,其特点是:在编译时分配内存空间并进行初始化。在程序运行期间,变量一直存在,直到程序结束,变量对应的内存空间才被释放。
而所有的非静态局部变量(又称为自动变量)保存在栈(stack)中,其特点是:在变量所在的函数或模块被执行时动态创建,函数或模块执行完时,变量对应的内存空间被释放。换句话说,函数或模块每被执行一次,局部变量就会重新被分配空间。如果变量定义时没有初始化,那么变量中的值是随机数。
所有用malloc分配的内存(又称为动态内存)都在堆(heap)中,其特点是:一般通过指针来访问动态分配的内存。即可以通过free来手动释放动态内存,也可以在程序结束时由系统自动释放。
以上讨论的是变量的生命周期,下面来看作用域。作用域指的是变量的可见范围,即在变量的生命周期内,程序的哪些部分可以使用该变量。
全局变量的作用域从定义点开始一直到源文件的结束。如果要在定义点之前使用全局变量的话就需要使用关键字extern对作用域进行扩展。全局变量缺省是可以被其他文件引用的。如果希望仅限于本文件使用的话,需要在定义时使用关键字static。
对于局部变量来说,无论是静态局部变量还是自动变量,作用域都仅限于定义该变量的函数或模块。
动态内存只要没有被释放就可以在程序的任何地方使用,前提是要知道动态内存的地址。
注:static加在全局变量前影响的是作用域,加在局部变量前影响的是生命周期。
⑹ 什么是变量的存储类型
量有4种存储类型,分别是auto(自动型)、static(静态型)、register(寄存器型)和extern(外部型)。在定义或说明一个变量时可以加上存储类型关键字,以限定其存储类别。
存储类型决定了系统将在哪一个数据存储区为变量分配存储空间。
⑺ 对于数据类型和存储类别,你是如何理解的
二级C难度也不是太大,心态要放好考试大纲不会有太大改变但时间方面:以前:笔试(120分钟) 机试(90分钟)现在:笔试(90分钟) 机试(120分钟)上机环境:以前:TC现在:VC公共基础知识基本要求1.熟悉Visual C++ 6.0集成开发环境。2.掌握结构化程序设计的方法,具有良好的程序设计风格。3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。4.在Visual C++ 6.0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。考试内容一、C语言程序的结构1.程序的构成,main函数和其他函数。2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。3.源程序的书写格式。4.C语言的风格。二、数据类型及其运算1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。2.C运算符的种类、运算优先级和结合性。3.不同类型数据间的转换与运算。4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。三、基本语句1.表达式语句,空语句,复合语句。2.输入输出函数的调用,正确输入数据并正确设计输出格式。四、选择结构程序设计1.用if语句实现选择结构。2.用switch语句实现多分支选择结构。3.选择结构的嵌套。五、循环结构程序设计1.for循环结构。2.while和do-while循环结构。3.continue语句break语句。4.循环的嵌套。六、数组的定义和引用1.一维数组和二维数组的定义、初始化和数组元素的引用。2.字符串与字符数组。七、函数1.库函数的正确调用。2.函数的定义方法。3.函数的类型和返回值。4.形式参数与实在参数,参数值的传递。5.函数的正确调用,嵌套调用,递归调用。6.局部变量和全局变量。7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。八、编译预处理1.宏定义和调用(不带参数的宏,带参数的宏)。2.“文件包含”处理。九、指针1.地址与指针变量的概念,地址运算符与间址运算符。2.一维。二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。3.用指针作函数参数。4.返回地址值的函数。5.指针数组,指向指针的指针。十、结构体(即“结构”)与共同体(即:“联合”)1.用typedef说明一个新类型。2.结构体和共用体类型数据的定义和成员的引用。3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。十一、位运算1.位运算符的含义和使用。2.简单的位运算。十二、文件操作只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。1.文件类型指针(FILE类型指针)。2.文件的打开与关闭(fopen,fclose)。3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)。上机操作包括:(1)填空(30分)(2)改错(30分)(3)编程(40分)
⑻ C语言中有哪些存储类型
Turbo C2.0支持四种变量存储类型。说明符如下: x0dx0a auto static extern register x0dx0a下面分别来介绍。 x0dx0a一、auto x0dx0aauto称为自动变量。x0dx0ax0dx0a局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进 x0dx0a行说明, 当auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上 x0dx0a从来不用。 x0dx0a 局部变量在函数调用时自动产生, 但不会自动初始化, 随函数调用的结束, 这 x0dx0a个变量也就自动消失了, 下次调用此函数时再自动产生, 还要再赋值, 退出时又自 x0dx0a动消失。 x0dx0a二、static x0dx0a static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。 x0dx0a 1. 静态局部变量 x0dx0a 它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它 x0dx0a函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样。 x0dx0a 2. 静态全程变量 x0dx0a Turbo C2.0允许将大型程序分成若干独立模块文件分别编译, 然后将所有模块 x0dx0a的目标文件连接在一起, 从而提高编译速度, 同时也便于软件的管理和维护。静态 x0dx0a全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与 x0dx0a全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用, x0dx0a而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。 x0dx0a三、extern x0dx0a extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要 x0dx0a被其它文件使用。因此, 必须将全程变量通知每一个程序模块文件, 此时可用 x0dx0aextern来说明。 x0dx0a四、register x0dx0a register称为寄存器变量。它只能用于整型和字符型变量。定义符register说 x0dx0a明的变量被Turbo C2.0存储在CPU的寄存器中, 而不是象普通的变量那样存储在内 x0dx0a存中, 这样可以提高运算速度。但是Turbo C2.0只允许同时定义两个寄存器变量, x0dx0a一旦超过两个, 编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量 x0dx0a来处理。因此, 寄存器变量常用在同一变量名频繁出现的地方。 x0dx0a 另外, 寄存器变量只适用于局部变量和函数的形式参数, 它属于auto型变量, x0dx0a因此, 不能用作全程变量。定义一个整型寄存器变量可写成: x0dx0a register int a; x0dx0a 对于以上所介绍的变量类型和变量存储类型将会在以后的学习中, 通过例行程 x0dx0a序中的定义、使用来逐渐加深理解。
⑼ 存储器可分为哪三类
存储器不仅可以分为三类。因为按照不同的划分方法,存储器可分为不同种类。常见的分类方法如下。
一、按存储介质划分
1. 半导体存储器:用半导体器件组成的存储器。
2. 磁表面存储器:用磁性材料做成的存储器。
二、按存储方式划分
1. 随机存储器:任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无关。
2. 顺序存储器:只能按某种顺序来存取,存取时间和存储单元的物理位置有关。
三、按读写功能划分
1. 只读存储器(ROM):存储的内容是固定不变的,只能读出而不能写入的半导体存储器。
2. 随机读写存储器(RAM):既能读出又能写入的存储器。
二、选用各种存储器,一般遵循的选择如下:
1、内部存储器与外部存储器
一般而言,内部存储器的性价比最高但灵活性最低,因此用户必须确定对存储的需求将来是否会增长,以及是否有某种途径可以升级到代码空间更大的微控制器。基于成本考虑,用户通常选择能满足应用要求的存储器容量最小的微控制器。
2、引导存储器
在较大的微控制器系统或基于处理器的系统中,用户可以利用引导代码进行初始化。应用本身通常决定了是否需要引导代码,以及是否需要专门的引导存储器。
3、配置存储器
对于现场可编程门阵列(FPGA)或片上系统(SoC),可以使用存储器来存储配置信息。这种存储器必须是非易失性EPROM、EEPROM或闪存。大多数情况下,FPGA采用SPI接口,但一些较老的器件仍采用FPGA串行接口。
4、程序存储器
所有带处理器的系统都采用程序存储器,但是用户必须决定这个存储器是位于处理器内部还是外部。在做出了这个决策之后,用户才能进一步确定存储器的容量和类型。
5、数据存储器
与程序存储器类似,数据存储器可以位于微控制器内部,或者是外部器件,但这两种情况存在一些差别。有时微控制器内部包含SRAM(易失性)和EEPROM(非易失)两种数据存储器,但有时不包含内部EEPROM,在这种情况下,当需要存储大量数据时,用户可以选择外部的串行EEPROM或串行闪存器件。
6、易失性和非易失性存储器
存储器可分成易失性存储器或者非易失性存储器,前者在断电后将丢失数据,而后者在断电后仍可保持数据。用户有时将易失性存储器与后备电池一起使用,使其表现犹如非易失性器件,但这可能比简单地使用非易失性存储器更加昂贵。
7、串行存储器和并行存储器
对于较大的应用系统,微控制器通常没有足够大的内部存储器。这时必须使用外部存储器,因为外部寻址总线通常是并行的,外部的程序存储器和数据存储器也将是并行的。
8、EEPROM与闪存
存储器技术的成熟使得RAM和ROM之间的界限变得很模糊,如今有一些类型的存储器(比如EEPROM和闪存)组合了两者的特性。这些器件像RAM一样进行读写,并像ROM一样在断电时保持数据,它们都可电擦除且可编程,但各自有它们优缺点。
参考资料来源:网络——存储器