- 3
- 0
- 约1.18万字
- 约 40页
- 2017-06-10 发布于北京
- 举报
⑴ 静态存储方式的数据: ☆ 全局变量 ☆ 静态局部变量 特点:在程序编译时分配内存单元,在整个程序执行期间占据固定存储单元,直到程序执行完毕才释放。 ⑵ 动态存储方式的数据: ☆ 函数的形式参数 ☆ 自动变量 ☆ 函数调用时的现场保护和返回地址等。 特点:函数调用时分配动态存储空间,函数调用结束时释放这些空间。即:动态分配和释放。 二、 auto变量 自动变量:用关键字auto作存储类别的声明。 在函数中定义的变量 自动变量 函数的形参 在复合语句中定义的变量 特点:在调用该函数时,系统给变量分配存储空间,函数调用结束时自动释放这些空间。 例如: int f(int a) { auto int b, c = 3; …… { int z; z = a + b; } } 说明:关键字“auto”可以省略不写(隐含指定为自动变量)。 例如: auto int b, c = 3; int b, c = 3; 三、 用static声明局部变量 静态局部变量: ⒈ 特点:函数中的局部变量的值在函数调用结束后不消失而保留原值,即其所占用的存储单元不释放,在下一次调用该函数时,该变量已有值,就是上一次函数调用结束时的值。 ⒉ 声明:(用关键字static进行声明) static 类型标识符 变量名 例如: static float a; 例 1: 考察静态局部变量的值。 #include stdio.h int f(int a) { int b = 0; static int c = 3; b = b + 1; c = c + 1; return (a + b + c); } int main(void) { int a = 2, i; for (i = 0; i 2; i++) { printf(“%d”, f(a)); } return 0; } 运行结果:? i=0 函数调用开始 函数调用结束 2 a 0 b 3 c 4 c 1 b 2 a 5 c 1 b 2 a 2 a 0 b 4 c i=1 函数调用开始 函数调用结束 关于静态局部变量的说明: ☆ 如在定义静态局部变量时不赋初值,编译时自动赋初值0 (对数值型数据)或空字符(对字符变量)。而对自动变量来说,如果不赋初值,它的值是一个不确定的值。 ☆ 静态局部变量仍属于局部变量,其它函数不能引用它。 例如: 对静态局部变量: static int a; (a=0) static float b; (b=0.0) static char c; (c=‘\0’) 对自动变量: int a; (a的值不确定) float b; (b的值不确定) char c; (c的值不确定) #include stdio.h double fac( ); int main(void) { int i, n; double Sum = 0; printf(Please input n: ); scanf(%d, n); 例2:P824.C 静态变量的应用:求阶乘运算 for (i = 1; i = n; i++) { Sum += 1 / fac( ); } printf(\nS=1/1!+1/2!+...+1/%d!=%.16f\n, n, Sum); return 0; } double fac( ) { static int i = 1; static double p1 = 1.0; p1 *= i; i++; return p1; } 课堂练习 1.以下程序的输出结果是( )。 #include stdio.h int d = 1; int fu
您可能关注的文档
最近下载
- 大学生职业生涯规划与就业指导教学教案(共10课).docx VIP
- 《民法典之债权法》课件.ppt VIP
- 无线局域网技术与实践课程标准教学教案.docx
- 提高出院患者随访率PDCA.pptx VIP
- 《GB_T 18802.331-2024低压电涌保护器元件 第331部分:金属氧化物压敏电阻(MOV)的性能要求和试验方法》专题研究报告.pptx
- 2002年上海市第十六届初中物理竞赛(大同中学杯)初赛试题.doc VIP
- 2023年四川信息职业技术学院单招职业技能考试题库及答案解析word版.docx VIP
- 大学生职业生涯规划与就业指导课标教案.docx VIP
- 2025年统招专升本云南省医学综合考试试题及答案.docx VIP
- 《广告学概论》PPT课件共482页.pptx VIP
原创力文档

文档评论(0)