预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共51页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言程序设计教程(第4版)第6章函数与宏定义6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.1函数的概念6.2变量的作用域和存储类型局部变量和全局变量的作用域如图所示: 例2:阅读程序【例6-4】的程序,了解变量作用域。 请注意区分局部变量和全局变量的作用域。 程序:example6_4.c2.变量的存储类型 变量的存储类型指的是变量的存储属性,它说明变量占用存储空间的区域。 在内存中,供用户使用的存储区由程序区、静态存储区和动态存储区3部分组成。 变量的存储类型:auto、register、static和extern4种。 ①auto型变量存储在内存的动态存储区; ②register型变量保存在寄存器中; ③static型和extern变量存储在静态存储器。 局部变量的存储类型默认值为auto型。 全局变量的存储类型默认值为extern型。 注意: ①一般情况下,常用auto型register型定义局部变量。 ②static型既可作为局部变量,又可作为全局变量。 作为局部变量时,局部变量的值将被保留,若定义时没有赋初值,则系统会自动为其赋0值; 作为全局变量时,其有效范围为它所在的源文件,其他源文件不能使用。 例3:设计一个函数:longfac(intn),用来计算正整数的阶乘,编写程序进行测试。 分析:由于计算机对变量的字节长度分配有限,整型变量的最大值是一定的,因此,目前计算整数的阶乘只能针对较小的整数。假定要计算1~5的阶乘。 算法的核心思想:对于任意正整数n,如果知道(n−1)!,则n!=n×(n−1)!。 可在函数中定义一个static型变量,用来保存每一次阶乘的计算结果。 程序如下: /*example6_5.c*/ #include<stdio.h> longfac(intn)/*计算n!的函数*/ { staticintf=1; f=f*n; returnf; } main() { inti; for(i=1;i<=5;i++) printf("%d!=%ld\n",i,fac(i)); } 6.3内部函数与外部函数6.3内部函数与外部函数6.3内部函数与外部函数6.3内部函数与外部函数6.3内部函数与外部函数6.4递归函数的设计和调用6.4递归函数的设计和调用6.4递归函数的设计和调用6.4递归函数的设计和调用6.4递归函数的设计和调用6.4递归函数的设计和调用6.4递归函数的设计和调用6.5预处理6.5预处理6.5预处理6.5预处理6.5预处理6.5预处理6.6综合范例6.6综合范例6.6综合范例6.6综合范例6.6综合范例6.6综合范例6.6综合范例6.6综合范例6.6综合范例6.7本章小结本章习题