局部变量,局部静态变量,全局变量,全局静态变量分别存放在哪个区?

局部变量,局部静态变量,全局变量,全局静态变量分别存放在哪个区?,第1张

局部变量
栈区
局部静态变量:静态区
全局变量:
静态区的
常量

全局静态变量:静态区
内存分四个区:静态区,栈区,堆区,
代码

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

我想你说的应该是数据类型吧
没记错的话应该有以下几种:
静态变量:变量的生存期是从程序开始到结束;
动态变量:在程序运行当中需要调用该变量时才为它分配内存;
寄存器变量:存在于寄存器中:用于需要高速存取数据的场合

C语言 有哪几种存储类型?

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

C++局部变量的存储方式有哪几种

静态存储方式与动态存储方式(具体:自动的、静态的、寄存器的register、外部的extern)
在内存中的用户的存储空间分为:程序区、静态存储区、动态存储区。
静态存储方式:在程序运行期间,系统对变量分配的固定空间。
动态存储方式:在程序运行期间,系统对变量分配的动态空间
1>用static来声明静态局部变量,局部变量的值在函数结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量保留上次函数调用结束时的值。静态局部变量的默认值为0
2>动态的局部变量当函数体被调用完毕时,变量的空间被释放。

c语言定义变量时,若无变量存储类型说明,则变量的存储类型是

c

变量存储类别分为哪几种

C语言中的变量有四种存储类型,这四种存储类型的关键字分别是
auto(自动)
extern(外部)
static(静态)
register(寄存器)

本地存储方式有哪几种

数据库,nsuserdefauts, file , plist,archieve 归档
比较小的就放在nsuserdefaults(以文件设计的存放在Libraray中)
数据库里面适合存放一条一条的记录
file 一般存普通文件,,视频,音频等
plist 存放比 nsuserdefaults 大一些的
归档 nsarchieve 可以存对象

当变量的存储类型定义缺省时,系统默认为变量的存储类型为? c语言

当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区

c语言基本变量有哪些存储类型

老谭的书上有:
实型数据一般占4个字节(32位)内存空间。按指数形式存储。
实数314159在内存中的存放形式如下:
+ 314159 1
数符 小数部分 指数
其中:
小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。
指数部分占的位数愈多,则能表示的数值范围愈大。
基础加强哟。

在C++语言中,局部变量的隐含存储类型是() auto 无存储类型 答案为什么是无存类型

一个C变量有以下两种存储时期之一:静态存储时期(static storage duration)和自动存储时期(automatic storage duration)。
具有代码块作用域的变量一般情况下具有自动存储时期。在程序进入定义这些变量的代码块时,将为这些变量分配内存;当退出这个代码块时,分配的内存将被释放。该思想把自动变量使用的内存视为一个可以重复使用的工作区或者暂存内存。
局部变量都属于自动类型,即一旦程序栈d出,局部变量消失。

什么是变量的存储类型

量有4种存储类型,分别是auto(自动型)、static(静态型)、register(寄存器型)和extern(外部型)。在定义或说明一个变量时可以加上存储类型关键字,以限定其存储类别。
存储类型决定了系统将在哪一个数据存储区为变量分配存储空间。

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中)。

由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。

如果在定义一个内部变量时,在定义语句最前面加上static存储类型限定词,那么该变量将是一个静态型变量。该变量将在静态数据区分配存储空间。这种变量作用域虽然只在函数内部,但是该变量将一直在静态数据区占据存储空间,直到程序运行结束。

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

c语言中静态变量作常量使用,用于存储常数。可用const,constant或final等关键字标识,其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区。

对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。

扩展资料:

在函数内以static声明的静态局部变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内),但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同。

一般来说,静态分配时存储空间于编译时在程序数据段分配,一次分配全程有效;而自动分配时存储空间则是于调用栈上分配,只在调用时分配与释放,且两次调用间变量值始终保持一致;必须注意,静态局部变量只能初始化一次,这是由编译器来保证实现。

问题1:
堆Heap指的是用malloc和free,new和delete等函数动态创建的内存空间,由程序员自己维护和管理;
栈Stack指的是函数1跳转进入子函数2之前,为了保护函数1的现场(CPU寄存器状态等信息,委的就是子函数2执行结束,还能够返回到函数1) *** 作系统自动进行的压栈和出栈 *** 作;另外,我记得函数1进入子函数2之后,子函数2内部的临时变量也是由 *** 作系统在栈中分配的。
问题2:
全局变量在编译时就被编译器固定在“数据段”了,占了数据段中的位置(存储空间);
静态变量我没有研究过,不敢轻言。

不太严格的说,可以这么认为。
因为全局变量和静态变量在内存里是储存在一个地方的。叫
data
segment
(数据段),静态区。意思是这个地方的数据的生命周期是不变的,只要程序本身在运行,他们就会存在。所以说他们都存在同一片区域内。
你能想到
静态变量

全局变量
在使用的时候有什么区别吗?唯一的区别就是对于多个文件的访问权限,static
的变量只对本文件有效,而全局变量(除去const)对当前所有文件有效。maincpp
可以访问
foocpp
的全局变量,而不能访问
foocpp
的静态变量。
既然他们存在一个地方,如何区分呢。通过变量的
linkage
(即能否被链接器识别)属性,internal
linkage
的变量只能被本文件访问,而
external
linkage
的变量可以被其他文件访问。就这个层面而言,你的想法不能说有错。

全局变量和静态变量的存储是放在一块的,都放在全局区(静态区),初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放空间。

对,一个运行的程序属于一个进程,进程是由 *** 作系统管理的,程序结束了,该程序所占用的资源会由 *** 作系统来回收。

静态变量的静态:变量占用的存地址不释放,也就是说它的地址它从头到尾一内直占着,容不给其他内存单元占用而已,其本身的值是可以改变的。

动态的变量:比如调用函数体里定义的变量,在函数执行后便释放出去,把有用的地址资源贡献给其他量,释放以后如果你用指针来打印这个地址的值的话,就很有可能不是原来的值了。

扩展资料:

静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。

编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区;为防止常数变量被错误的指针写入覆盖,亦可在这块区域启用内存保护机制。

参考资料来源:百度百科-静态变量


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13377853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存