C 语言中全局变量、局部变量、函数参数个是在什么时候分配内存空间

如题所述

全局变量是在main函数之前就分配
局部变量在定义时分配,超出作用域后释放
静态局部变量只分配一次,程序退出后才释放
函数参数与局部变量基本上相同在进入函数时分配,函数结束时释放
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-21
全局变量是使用相同的内存块在整个类中存储一个值.
全局变量的存在主要有以下一些原因:
1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。
2,使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样现在也快不了多少。
3,对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。
总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使期名字易于理解,而且不能太短,避免名字空间的污染;避免使用巨大对象的全局变量。
局部变量:在程序中,只在特定的过程或函数中可以访问的变量,是相对与全局变量而言的。
全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。
局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
第2个回答  2010-02-22
全局变量是在一开始分配内存
局部变量在使用时分配,使用完毕释放 一般是使用的函数被调用的时候
静态局部变量只分配一次,且不会释放
函数参数在使用时分配,使用完毕释放
第3个回答  2010-02-22
全局变量是在一开始分配内存
局部变量在使用时分配,使用完毕释放
静态局部变量只分配一次,且不会释放
函数参数在使用时分配,使用完毕释放
第4个回答  2013-03-26
主要是看变量属于什么存储类型,全局变量、静态变量存储于静态内存,局部变量和函数的形参存储于堆栈中,不存储于堆栈中的变量在可执行程序载入内存时便分配存储空间,即在程序执行之前,堆栈中的变量会在定义变量时分配内存空间。
相似回答