C语言中变量存储类型有哪些

如题所述

turbo
c2.0支持四种变量存储类型。说明符如下:
auto
static
extern
register
下面分别来介绍。
一、auto
auto称为自动变量。
局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进
行说明,
当auto省略时,
所有的非全程变量都被认为是局部变量,
所以auto实际上
从来不用。
局部变量在函数调用时自动产生,
但不会自动初始化,
随函数调用的结束,

个变量也就自动消失了,
下次调用此函数时再自动产生,
还要再赋值,
退出时又自
动消失。
二、static
static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。
1.
静态局部变量
它与局部变量的区别在于:
在函数退出时,
这个变量始终存在,
但不能被其它
函数使用,
当再次进入该函数时,
将保存上次的结果。其它与局部变量一样。
2.
静态全程变量
turbo
c2.0允许将大型程序分成若干独立模块文件分别编译,
然后将所有模块
的目标文件连接在一起,
从而提高编译速度,
同时也便于软件的管理和维护。静态
全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与
全程变量的区别是:
全程变量可以再说明为外部变量(extern),
被其它源文件使用,
而静态全程变量却不能再被说明为外部的,
即只能被所在的源文件使用。
三、extern
extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,
还要
被其它文件使用。因此,
必须将全程变量通知每一个程序模块文件,
此时可用
extern来说明。
四、register
register称为寄存器变量。它只能用于整型和字符型变量。定义符register说
明的变量被turbo
c2.0存储在cpu的寄存器中,
而不是象普通的变量那样存储在内
存中,
这样可以提高运算速度。但是turbo
c2.0只允许同时定义两个寄存器变量,
一旦超过两个,
编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量
来处理。因此,
寄存器变量常用在同一变量名频繁出现的地方。
另外,
寄存器变量只适用于局部变量和函数的形式参数,
它属于auto型变量,
因此,
不能用作全程变量。定义一个整型寄存器变量可写成:
register
int
a;
对于以上所介绍的变量类型和变量存储类型将会在以后的学习中,
通过例行程
序中的定义、使用来逐渐加深理解。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-17
自动,静态,外部,寄存在抄函数体内声明的变量在默认情况下都是auto存储类型
在代码块之间传递信息的一种方法就是使用外部变量。当一个变量在函数的外部被声明时,安的存储空间是永久分配的,安人存储类型是extren.外部变量的声明看上去和函数或代码块百内部所声明的变量一样。外部变量对于它之后的所有函数都有效。在代码块或函数后,外部变量仍然存在。
static的基本用途是允许一个局部变量在度重新进入代码块时能够保持原来的值。这和自动变量形成了鲜明的对比,自动变量在代码块时会被销毁,问再次进入这个代码块时,它必须重新进行初始答化。
register存储类型告诉编译器相关的变量应该改量存储在高速度的寄存器中。使用register存储类型的目的一般是为了提高执行速度,但是,register声明只是向编译器所提出的“建议”,并非强制要求
第2个回答  2019-03-19
自动,静态,外部,寄存在函数体内声明的变量在默认情况下都是auto存储类型
在代码块之间传递信息的一种方法就是使用外部变量。当一个变量在函数的外部被声明时,安的存储空间是永久分配的,安人存储类型是extren.外部变量的声明看上去和函数或代码块内部所声明的变量一样。外部变量对于它之后的所有函数都有效。在代码块或函数后,外部变量仍然存在。
static的基本用途是允许一个局部变量在重新进入代码块时能够保持原来的值。这和自动变量形成了鲜明的对比,自动变量在代码块时会被销毁,再次进入这个代码块时,它必须重新进行初始化。
register存储类型告诉编译器相关的变量应该改量存储在高速度的寄存器中。使用register存储类型的目的一般是为了提高执行速度,但是,register声明只是向编译器所提出的“建议”,并非强制要求
第3个回答  2017-11-15
自动 静态 寄存 易失
一说是
自动(auto)、静态(static)、寄存器的(register)和外部的(extern)
然而某认为extern是用来对编译器进行声明变量的,而不是定义。本回答被网友采纳