自动变量保存在程序的动态存储空间。
、静态局部变量——在函数体内或复合语句中用 定义的变量称为静态局部变
量。
语言编译时,对静态局部变量赋初值。
静态局部变量存储在程序的静态存储空间。
静态局部变量在程序的整个运行期间均占用程序的静态存储空间,直到程序退出
后才释放存储空间。
、寄存器变量——用 # 声明的变量。
、外部变量(全局变量)——在函数的外部定义的变量。它的作用域是从定义处开
始,到本程序文件的末尾结束,在此作用域内,全局变量可以为程序的各个函数
引用。
语言编译时,对全局变量赋初值。
全局变量存储在程序的静态存储空间。
全局变量在程序的整个运行期间均占用程序的静态存储空间,直到程序退出后才
释放存储空间。
*、注意:
()当引用本源文件后面定义的全局变量或引用在其他源文件中定义的全局变量是,
应在引用位置前,利用 +声明该全局变量,以告诉编译器编译时,引用的是一个外
部变量,在编译器连接时,将引用的外部变量的作用域扩展到本文件 +声明处。
()用 声明的全局变量,不能被其他文件引用。
10.程序的内存分配
答:一个由 ,--编译的程序占用的内存分为以下几个部分
、栈区($)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。
其操作方式类似于数据结构中的栈。
、堆区()—一般由程序员分配释放,若程序员不释放,程序结束时可能由 ./
回收。注意它与数据结构中的堆是两回事,分配方式是类似于链表。
、全局区(静态区)()—全局变量和静态变量的存储是放在一块的,初始化
的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的
另一块区域。程序结束后由系统释放。
、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放。
*、程序代码区—存放函数体的二进制代码
11.描述内存分配方式以及它们的区别?
) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的
整个运行期间都存在。例如全局变量,变量。
) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函
数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。
) 从堆上分配,亦称动态内存分配。程序在运行的时候用 !或 申请任意
多少的内存,程序员自己负责在何时用 或 (释放内存。动态内存的生存期由程
序员决定,使用非常灵活,但问题也最多
12.简述数组与指针的区别?
答:数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随