c语言里什么变量存储在堆中什么变量存储在栈中啊!

作者&投稿:尧楠 (若有异议请与网页底部的电邮联系)
C语言里,哪些变量是存放在堆里,哪些是存放在栈里?(~

在c/c++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
全局存储区(静态存储区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。
常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。
希望对你有帮助

在c/c++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
全局存储区(静态存储区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。
常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。
希望对你有帮助

来自百科:

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
4、文字常量区 — 常量字符串就是放在这里的,程序结束后由系统释放 。
5、程序代码区 — 存放函数体的二进制代码。

函数的局部变量、参数一般在栈中分配空间存储
也不是绝对的,编译器可能会优化使用寄存器传递参数
不过可以显式地规定函数的参数传递方式,可以查一下stdcall,fastcall等宏的具体定义和作用
局部变量中的静态变量的空间在数据段中,不在栈中

程序中动态分配的空间,如malloc分配的空间位于堆中

临时变量都在堆里,
关于栈。。很复杂,我也是一知半解


C语言变量的基本类型有哪些?
c语言的变量有三种类型:char,int,float,double 其中char为字符类型的变量是八位的,最前一位作为符号位,后面七位作为数据位.它的存储范围在-128到127之间.int整数类型的变量是16位的,最前一位为符号位,后面的15位作为数据位.它的存储范围在-215到215-1.也就是-32768到32767.它不包扩小数点以后的...

C语言中变量存储static和extern两个关键字的作用分别是什么
在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。(1)修饰局部变量 一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序...

c语言变量的储存类别及各自的特点
C语言变量存储类型 auto static extern static extern register auto 局部变量 auto 变量是用堆栈(stack)方式占用储存器空间,因此,当执行此区段是,系统会立即为这个变量分配存储器空间,而程序执行完后,这个堆栈立即被系统收回.在大括号{}内声明.自动变量就是指在函数内部定义使用的变量。他只是允许...

C语言中的 局部变量,存储在什么地方?
C语言中的局部变量存储在栈里。普通的局部变量在栈空间上分配,这个局部变量所在的函数被多次调用时,每次调用这个局部变量在栈上的位置都不一定相同。局部变量也可以在堆上动态分配(malloc),但是记得使用完这个堆空间后要释放之。在栈空间上分配时是要注意内存的,不能分配内存过大。如果栈内空间小于...

在C语言中,局部变量的存储类别自动默认为( )
C语言,局部变量的存储类别自动默认为 A,函数内部或语句组内部的局部变量默认是自动变量,即auto。

c语言里int和short型变量的区别是什么??
C语言中,int和short型变量的主要区别在于它们的存储大小和数值范围。以下是 1. 存储大小 在C语言中,int类型通常占用系统定义的整数大小的存储空间。在现代计算机系统中,int类型通常被设定为32位或64位,这意味着它们可以存储更大范围的整数。而short类型变量则通常占用较少的存储空间,通常为16位。这...

C语言, 存储类型关键字是什么?
\\x0d\\x0a此项为缺省值。auto int a;和int a;是完全相同的。所以在编程中一般看不到auto的使用。\\x0d\\x0a2 extern:声明外部变量。\\x0d\\x0a功能为扩展全局变量的作用域。\\x0d\\x0a3 register:声明寄存器变量。\\x0d\\x0a声明后,变量存储于CPU寄存器中。是最快的C语言变量。\\x0d\\x0...

汇编语言源程序中什么叫变量和标号,各有哪几种类型?
汇编语言中变量是存储某个寄存器值才用到的,访问变量值可以得到数据,而标号相当于标签,是标记某个程序段入口地址的,标号分为局部和全局类型,变量分为寄存器变量,还有动态变量等

2. 在C51语言中,说明定义的变量存储类型分别使用xdata和pdata时,两...
xdata存储在外部RAM。使用前要对总线操作。pdata可存取256字节\/页。多于一页时应在Startup.A51中指明pdata长度,操作时用P2口生成页地址。如果xdata大于256字节,还是用xdata方式较好。

c语言常量变量在内存中的存储方式
在栈上创建(地址从大到小):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(栈上的变量都具有临时变量的特性)从堆上分配(地址从小到大):亦称动态内存分配。程序在运行...

襄阳区18031065585: c语言里什么变量存储在堆中什么变量存储在栈中啊!
从朗天晴: 来自百科: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构中的堆是两回事,分配方式倒是类似于链表. 3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域.程序结束后由系统释放. 4、文字常量区 — 常量字符串就是放在这里的,程序结束后由系统释放 . 5、程序代码区 — 存放函数体的二进制代码.

襄阳区18031065585: C语言里,哪些变量是存放在堆里,哪些是存放在栈里?( -
从朗天晴: 在c/c++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区.栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区.里面的变量通常是局部变量、函数参数等.堆:就是那些由...

襄阳区18031065585: C语言中有哪些存储类型? -
从朗天晴: c语言中的存储类型有auto, extern, register, static 这四种,存储类型说明了该变量要在进程的哪一个段中分配内存空间,可以为变量分配内存存储空间的有数据区、BBS区、栈区、堆区.1. auto存储类型 auto只能用来标识局部变量的存储类型...

襄阳区18031065585: .C语言的auto型变量存储在哪里 -
从朗天晴: auto关键字很少用,因为变量默认是auto类型的.c的存储区分为栈,堆和静态存储区.static和全局变量在静态存储区,你所说的应该是在栈里,而malloc分配的内存在堆里.

襄阳区18031065585: C语言中外部变量,全局变量存放在哪里?内存?寄存器?? -
从朗天晴: 内存中.具体点来说内存分为三块:静态区,堆区,栈区.外部变量和全局变量存放在静态区,局部变量存放在栈区,动态开辟的内存存在堆区.

襄阳区18031065585: C语言的数据存储位置 -
从朗天晴: 答案是~A~不用管n是全局变量还是局部变量,变量只能存储在数据存储区,程序存储区是保存程序用,堆栈是程序中断是保存数据的数据存储区域

襄阳区18031065585: 一段C语言代码! -
从朗天晴: 你的这个问题问的真好. 在c中,变量一般有两种存放的地方,一个是堆,一个是栈.放在堆上的是不会因为子函数的结束而自动释放空间,而在栈上,这里你可以理解为临时租用的空间,一旦子函数结束,马上释放.当然了,并不是堆就比栈...

襄阳区18031065585: 在程序运行时,哪些变量存放在堆中.那些变量存放在栈中
从朗天晴: 堆:全局变量,静态变量,malloc函数 栈:子函数入口的临时变量,局部变量

襄阳区18031065585: C语言中指针变量是存在哪里的? -
从朗天晴: 1、指针变量和普通的变量一样,编译期储存在代码当中,运行期间储存在内存里.c语言的变量值是通过该变量的内存地址寻址得到的,而对于一个已经编译好的程序,变量的地址都是确定的值,不可以更改.这是因为程序在编译时编译器已经通过语法分析把指针变量的地址值计算出来了,所以指针变量实际上不用保存在内存堆栈或数据段中,而是包含在汇编代码里面.2、指针变量里面就是整型的一个十六进制数,用来表示的就是指向某个变量的地址;指针是C语言中广泛使用的一种数据类型;利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序;指针极大地丰富了编程语言的功能.

襄阳区18031065585: C中有哪些变量的存储类型 -
从朗天晴: c语言变量存储类型 auto static extern static extern register auto 局部变量auto 变量是用堆栈(stack)方式占用储存器空间,因此,当执行此区段是,系统会立即为这个变量分配存储器空间,而程序执行完后,这个堆栈立即被系统收回.在大括号{...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网