当前位置:首页 » 编程语言 » c语言存储单元有哪些
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言存储单元有哪些

发布时间: 2022-11-29 20:55:34

A. 举例写出c语言的四种存储类别。

auto:自动变量
auto存储在内存的堆栈区,属于临时性存储变量,并不长期占用内存,可以被多次覆盖。
register:寄存器变量
register与auto一样属于自动类别。区别在于register的值保存在CPU的寄存器中。计算机中只有寄存器中的数据才能直接参与运算,而一般变量是放在内存中的,变量参加运算是,需要先把变量从内存中取到寄存器中,然后计算。所以一般把使用最频繁的变量定义成register变量。register变量只能在函数中定义,并只能是int和char型。
static:静态变量
static一般存储在数据区,,这类变量在数据说明时被分配了一定的内存空间,程序运行期间,它占据一个永久的存储单元,,因此在对出函数后,存储单元中的值仍旧保留。简单说,程序运行时static型变量的值可以被语句改变,但当程序运行结束后,其值又变回原来的值。
extern:外部类型
estern变量在数据运行时被分配了一定的内存空间,该空间在整个运行程序中,只要程序存在,自始自终都被该变量使用,即其值始终不变

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

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

1、auto 自动变量

2、register 寄存器变量

3、extern 外部变量

4、static 静态变量

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

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

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

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

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

(2)c语言存储单元有哪些扩展阅读:

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

一、从作用域看:

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

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

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

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

二、从分配空间看:

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

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

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

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

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

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

C. 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序中的定义、使用来逐渐加深理解。

D. C语言中存储单元有无的区别

存储单元是内存的最小单元,也就是说存储是有许多存储单元组成,一个存储单元大小就是一个字节,占8bit,每个存储单元都有一个地址,相当于每个人都有一个身份证号码一样

比如:声明一个int变量系统分4个字节,也就是4个存储单元

你们老师所讲是跟什么联系在一起?

E. C语言中的内存地址和存储单元是什么概念

C语言中的内存地址和存储单元是什么概念
无符号的整数和有符号的正整数都是用二进制原码来表示,而负整数则是使用补码来表示(补码的算法:负数的绝对值的原码安位取反再加一)。举个例子来说吧:
假设机器使用的是16位来存储整数。
10
的存在形式是0000000000001010
-10的存在形式:
(1)
|-10|
=
10
,10原码为0000000000001010
(2)安位取反:
1111111111110101
(3)加1:
1111111111110110(最终结果)

F. C语言中有哪些存储类型

四种变量存储类型。说明符如下:
auto static extern register
一、auto
auto称为自动变量。
局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进
行说明, 当auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上
从来不用。
二、static
static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。
1. 静态局部变量
它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它
函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样。
2. 静态全程变量
Turbo C将大型程序分成若干独立模块文件分别编译, 然后将所有模块
的目标文件连接在一起, 从而提高编译速度, 同时也便于软件的管理和维护。静态
全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与
全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用,
而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。
三、extern
extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要
被其它文件使用。因此, 必须将全程变量通知每一个程序模块文件, 此时可用
extern来说明。
四、register
register称为寄存器变量。

G. c语言内存单元是按什么编号的

内存单元。内存单元一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。只不过因为RAM是其中最重要的存储器。S(synchronous)DRAM同步动态随机存取存储器:SDRAM为168脚,这是目前PENTIUM及以上机型使用的内存。

H. c语言中存储单元的地址和存储单元的内容有什么区别

储存单元的地址是地址(指存的东西的位置),储存单元的内容是储存单元里的数据。
例如:储存单元的地址就是家的门牌号,储存单元的内容是家里的东西。

I. 在C语言中,存储类别包括什么

1、c语言中的存储类型有static 、auto、extern、及register,函数默认的存储类型应该是extern,意思是具有外部链接性的。一般来说,会通过extern来声明函数。
2、比如下面的代码,在1.c中定义一个函数,函数的声明写在1.h头文件中,在2.c中通过添加1.h的头文件,来声明及调用函数f()。

//1.c
void f() { ; }
//1.h
extern void f();
//2.c
#include "1.h"
int main() { f();}