正在加载图片...
靳润昭C语言教程讲义 2001年2月17日 用户区 程序区 静态存储区 动态存储区 全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完 毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放 动态存储区存放以下数据 1)函数形式参数 2)自动变量(未加satc声明的局部变量); 3)函数调用实的现场保护和返回地址: 对以上这些数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。 在c语言中,每个变量和函数有两个属性:数据类型和数据的存储类别 892auto变量 函数中的局部变量,如不专门声明为 statIc存储类别,都是动态地分配存储空间的,数 据存储在动态存储区中。函数中的形参和在函数中定义的变量(包括在复合语句中定义的变 量),都属此类,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释 放这些存储空间。这类局部变量称为自动变量。自动变量用关键字auto作存储类别的声明 例如 int f(int a) /定义f函数,a为参数 { auto int b,c=3;/*定义b,c自动变量* a是形参,b,c是自动变量,对c赋初值3。执行完f函数后,自动释放a,b,c所占 的存储单元 关键字auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式 893用 static声明局部变量 有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,这时就应该指定 局部变量为“静态局部变量”,用关键字 statIc进行声明 【例8.15】考察静态局部变量的值 f(int a auto b=0 static c=3 b=b+1 return(a+b+c) 第21页靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第21页 全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完 毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放; 动态存储区存放以下数据: 1) 函数形式参数; 2) 自动变量(未加 static 声明的局部变量); 3) 函数调用实的现场保护和返回地址; 对以上这些数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。 在 c 语言中,每个变量和函数有两个属性:数据类型和数据的存储类别。 8.9.2 auto 变量 函数中的局部变量,如不专门声明为 static 存储类别,都是动态地分配存储空间的,数 据存储在动态存储区中。函数中的形参和在函数中定义的变量(包括在复合语句中定义的变 量),都属此类,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释 放这些存储空间。这类局部变量称为自动变量。自动变量用关键字 auto 作存储类别的声明。 例如: int f(int a) /*定义 f 函数,a 为参数*/ {auto int b,c=3; /*定义 b,c 自动变量*/ …… } a 是形参,b,c 是自动变量,对 c 赋初值 3。执行完 f 函数后,自动释放 a,b,c 所占 的存储单元。 关键字 auto 可以省略,auto 不写则隐含定为“自动存储类别”,属于动态存储方式。 8.9.3 用 static 声明局部变量 有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,这时就应该指定 局部变量为“静态局部变量”,用关键字 static 进行声明。 【例 8.15】考察静态局部变量的值。 f(int a) {auto b=0; static c=3; b=b+1; c=c+1; return(a+b+c); } main()
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有