当前位置:首页 » 存储配置 » c语言存储类别

c语言存储类别

发布时间: 2022-09-02 19:54:17

c语言中变量的存储类型有哪几种,存储方式哪几种谢喽

在C语言中,对变量的存储类型说明有以下四种:

1、auto 自动变量

2、register 寄存器变量

3、extern 外部变量

4、static 静态变量

所谓存储类型是指变量占用内存空间的方式,也称为存储方式。

变量的存储方式可分为“静态存储”和“动态存储”两种。

1、静态存储变量通常是在变量定义时就在存储单元并一直保持不变,直至整个程序结束。

2、动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放。典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放。

如果一个函数被多次调用,则反复地分配、释放形参变量的存储单元。从以上分析可知,静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。

(1)c语言存储类别扩展阅读:

变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

一、从作用域看:

1、全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量的定义的源文件需要用extern关键字再次声明这个全局变量。

2、静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束一直存在,它和全局变量的区别在于全局变量对所有函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

3、局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。

4、静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它文件里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

二、从分配空间看:

全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间。

全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一个源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。

1、静态变量会放在程序的静态数据存储区(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。

2、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

参考资料来源:网络-变量-存储类型

Ⅱ C语言中有哪些存储类型

自动,静态,外部,寄存在函数体内声明的变量在默认情况下都是auto存储类型

在代码块之间传递信息的一种方法就是使用外部变量。当一个变量在函数的外部被声明时,安的存储空间是永久分配的,安人存储类型是extren.外部变量的声明看上去和函数或代码块内部所声明的变量一样。外部变量对于它之后的所有函数都有效。在代码块或函数后,外部变量仍然存在。

static的基本用途是允许一个局部变量在重新进入代码块时能够保持原来的值。这和自动变量形成了鲜明的对比,自动变量在代码块时会被销毁,再次进入这个代码块时,它必须重新进行初始化。

register存储类型告诉编译器相关的变量应该改量存储在高速度的寄存器中。使用register存储类型的目的一般是为了提高执行速度,但是,register声明只是向编译器所提出的“建议”,并非强制要求

Ⅲ 在C语言中,全局变量的存储类别是

全局变量的存储类别是静态存储区。

变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。

全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。

由下图可以看出a、b、x、y 都是在函数外部定义的外部变量,都是全局变量。但x,y 定义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。 a,b定义在源程序最前面,因此在f1,f2及main内不加说明也可使用。

全局变量是使用相同的内存块在整个类中存储一个值全局变量extern与static,extern在其他源程序中也可以使用;static只能在本程序中使用。

(3)c语言存储类别扩展阅读:

数据区可以分为静态数据区(全局数据区)和动态数据区,后者又可分为堆区和栈区。之所以这样划分,是因为它们存放的数据和对应的管理方法不同。

静态数据区、栈区和堆区的存储空间分别遵循3种不同的规则:静态存储分配、栈式存储分配和堆式存储分配。后两种分配方式皆称为“动态存储分配”,因为这两种方式中存储空间并不是在编译的时候静态分配好的,而是在运行时才进行的。

某些编程语言,如早期的FORTRAN语言及COBOL语言等,其存储分配是完全静态的,程序的数据对象与其存储的绑定是在编译期间进行的,称为静态语言。

而对于另一些语言,所有数据对象与其存储的绑定只能发生在运行期间,此类语言称为动态语言,如Lisp、ML、Perl等。多数语言(如C/C++、Java、Pascal等)采取的存储分配策略是介于二者之间的。

Ⅳ c语言中,函数的隐含存储类别及形参的默认存储类别分别是

c语言中,函数的隐含存储类别是extern
形参的默认存储类别是auto

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

自动,静态,外部,寄存在抄函数体内声明的变量在默认情况下都是auto存储类型
在代码块之间传递信息的一种方法就是使用外部变量。当一个变量在函数的外部被声明时,安的存储空间是永久分配的,安人存储类型是extren.外部变量的声明看上去和函数或代码块百内部所声明的变量一样。外部变量对于它之后的所有函数都有效。在代码块或函数后,外部变量仍然存在。
static的基本用途是允许一个局部变量在度重新进入代码块时能够保持原来的值。这和自动变量形成了鲜明的对比,自动变量在代码块时会被销毁,问再次进入这个代码块时,它必须重新进行初始答化。
register存储类型告诉编译器相关的变量应该改量存储在高速度的寄存器中。使用register存储类型的目的一般是为了提高执行速度,但是,register声明只是向编译器所提出的“建议”,并非强制要求

Ⅵ c语言中形参的缺省存储类别是

c语言中形参或者说所有的变量,缺省的存储类别都是auto的。C语言中四种存储类别:auto、static、extern、register 。

其中大部分均为auto,auto为默认的类别,一般未标明的都是auto;如果标明了哪种类别,那就按标明的来。

(6)c语言存储类别扩展阅读:

形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。

没有形参的函数在形参表的位置应该写int main(void) 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。

形参的特点:

1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。

4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

Ⅶ 在C语言中,存储类别包括

TurboC2.0支持四种变量存储类型。说明符如下:
autostaticexternregister
下面分别来介绍。
一、auto
auto称为自动变量。
局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进
行说明,当auto省略时,所有的非全程变量都被认为是局部变量,所以auto实际上
从来不用。
局部变量在函数调用时自动产生,但不会自动初始化,随函数调用的结束,这
个变量也就自动消失了,下次调用此函数时再自动产生,还要再赋值,退出时又自
动消失。
二、static
static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。
1.静态局部变量
它与局部变量的区别在于:在函数退出时,这个变量始终存在,但不能被其它
函数使用,当再次进入该函数时,将保存上次的结果。其它与局部变量一样。
2.静态全程变量
TurboC2.0允许将大型程序分成若干独立模块文件分别编译,然后将所有模块
的目标文件连接在一起,从而提高编译速度,同时也便于软件的管理和维护。静态
全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与
全程变量的区别是:全程变量可以再说明为外部变量(extern),被其它源文件使用,
而静态全程变量却不能再被说明为外部的,即只能被所在的源文件使用。
三、extern
extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,还要
被其它文件使用。因此,必须将全程变量通知每一个程序模块文件,此时可用
extern来说明。
四、register
register称为寄存器变量。它只能用于整型和字符型变量。定义符register说
明的变量被TurboC2.0存储在CPU的寄存器中,而不是象普通的变量那样存储在内
存中,这样可以提高运算速度。但是TurboC2.0只允许同时定义两个寄存器变量,
一旦超过两个,编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量
来处理。因此,寄存器变量常用在同一变量名频繁出现的地方。
另外,寄存器变量只适用于局部变量和函数的形式参数,它属于auto型变量,
因此,不能用作全程变量。定义一个整型寄存器变量可写成:
registerinta;
对于以上所介绍的变量类型和变量存储类型将会在以后的学习中,通过例行程
序中的定义、使用来逐渐加深理解。

Ⅷ C语言中全局变量的储存类别是

C语言中全局变量的储存类别是静态存储区。

由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。

全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。



(8)c语言存储类别扩展阅读:

使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不应该算什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。

使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样也快不了多少。对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。

当全局变量与局部变量重名的时候,起作用的是局部变量,全局变量被屏蔽掉。还可以用extern在函数外对全局变量声明,使全局变量的作用域从声明处到文件的结束。

Ⅸ C语言动态和静态存储类别的区别

主要区别在于存储区域和作用时间。
C语言的数据区分为静态存储区与动态存储区。
静态存储是指在程序运行期间给变量分配固定存储空间的方式。如全局变量存放在静态存储区中,程序运行时分配空间,程序运行完释放。
动态存储是指在程序运行时根据实际需要动态分配存储空间的方式。如形式参数存放在动态存储区中,在函数调用时分配空间,调用完成释放。

Ⅹ c语言中形参的缺省存储类别是

c语言中形参或者说所有的变量,缺省的存储类别都是auto的。C语言中四种存储类别:auto、static、extern、register 。

其中大部分均为auto,auto为默认的类别,一般未标明的都是auto;如果标明了哪种类别,那就按标明的来。

(10)c语言存储类别扩展阅读:

形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。

没有形参的函数在形参表的位置应该写int main(void) 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。

形参的特点:

1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。

4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

热点内容
分部数据库服务器的IP地址有效 发布:2025-03-16 06:33:40 浏览:191
安卓项目如何配置tomacat 发布:2025-03-16 06:31:13 浏览:429
写脚本测试 发布:2025-03-16 06:20:07 浏览:779
多个拨号宽带如何配置 发布:2025-03-16 05:51:35 浏览:686
管理员c语言 发布:2025-03-16 05:40:17 浏览:341
安卓软件上的图案如何更改 发布:2025-03-16 05:35:57 浏览:746
2010编译c中文乱码 发布:2025-03-16 05:33:40 浏览:549
干一杯密码箱酒多少钱一箱 发布:2025-03-16 05:31:15 浏览:356
我的零钱通密码是多少 发布:2025-03-16 05:04:36 浏览:937
编程猫酷跑 发布:2025-03-16 04:58:35 浏览:321