7.3 限制文件作用域-高二《新概念C语言能力教程》同步教学课件 (电工版2020)

2023-06-12
| 18页
| 112人阅读
| 0人下载
精品

内容正文:

第7章 函数 第7章 函数 函数定义 函数调用及函数声明 数组作形参 变量的作用域 全局变量作用域的扩展 限制文件作用域 函数的易用性 递归1 递归2 库函数1 库函数2 团队开发++ 限制文件作用域 这节课我们讨论限制文件作用域。 3 限制全局变量的作用域 为了防止全局变量的误用,可以用关键字static限制全局变量的作用域。 在定义全局变量时,类型前加一个关键字static,如static int g_i;,就可以将全局变量g_i的作用域限制在当前源文件中,而不能被扩展到其他源文件中了。 如果把static int g_i;语句放置在复合语句中,则全局变量g_i的作用域就被限制在此复合语句中了! 为了防止全局变量的误用,可以用关键字static限制全局变量的作用域。 在定义全局变量时,类型前加一个关键字static,如static int g_i;,就可以将全局变量g_i的作用域限制在当前源文件中,而不能被扩展到其他源文件中了。 如果把static int g_i;语句放置在复合语句中,则全局变量g_i的作用域就被限制在此复合语句中了! 4 static变量 语句static int j = 0; 定义一个变量j,关键字static从两个方面影响变量。 变量j的生命周期与全局变量相同,main函数执行之前分配存储单元,main函数执行完毕回收存储单元,因此,f函数执行时,语句static int j = 0;不再执行。 变量j的作用域从第3行开始至第7行止。 static变量j是全局变量的生命周期,局部变量的作用域。 语句static int j = 0; 定义一个变量j,关键字static从两个方面影响变量。 变量j的生命周期与全局变量相同,main函数执行之前分配存储单元,main函数执行完毕回收存储单元,因此,f函数执行时,语句static int j = 0;不再执行。 变量j的作用域从第3行开始至第7行止。 static变量j是全局变量的生命周期,局部变量的作用域。又称为静态局部变量。静态是指生命期,局部是指作用域。 5 例7-14 局部变量?全局变量? 程序先给静态局部变量j分配存储单元并初始化为0,main函数开始执行,调用f函数,忽略已处理语句static int j = 0;,定义一个局部变量i,初值为0. 变量i的值由0变为1,表达式i + j++的值为1,但求值时变量j的值由0变为1,函数f返回,main函数继续执行,输出函数值1。 再次调用f函数,忽略已处理语句static int j = 0;,定义一个局部变量i,初值为0. 变量i的值由0变为1,表达式i + j++的值为2,但求值时变量j的值由1变为2,函数f返回,main函数继续执行,输出函数值2。 第3次调用f函数,同样的处理过程,main函数输出函数值3。 6 函数的封闭性 所谓“函数的封闭性”是指用相同的实参调用函数时,函数会有相同的返回值。如函数调用fun(5)的值为6,则函数调用fun(2+3)的值也应为6。 上例中的函数f没有封闭性。 使用“全局变量”可能会破坏 函数的封闭性。 没有封闭性的函数大多难以 理解。 所谓“函数的封闭性”是指用相同的实参调用函数时,函数会有相同的返回值。如函数调用fun(5)的值为6,则函数调用fun(2+3)的值也应为6。 上例中的函数f没有封闭性。 使用“全局变量”可能会破坏函数的封闭性。 没有封闭性的函数大多难以理解。 7 随机序列 随机序列是指没有“规律” 的序列,即不能通过序列前面的数来推测后面的数。随机序列中的数称为随机数。 randomize函数是一个可以产生随机数的函数,它“随机” 地返回0到32767之间的一个数,即它返回其间任一个数的概率相同。多次调用randomize函数可以得到一个随机数序列。 randomize函数显然没有封闭性。 可以借助静态局部变量实现randomize函数。 随机序列是指没有“规律” 的序列,即不能通过序列前面的数来推测后面的数。随机序列中的数称为随机数。 randomize函数是一个可以产生随机数的函数,它“随机” 地返回0到32767之间的一个数,即它返回其间任一个数的概率相同。 多次调用randomize函数可以得到一个随机数序列。 randomize函数显然没有封闭性。 可以借助静态局部变量实现randomize函数。 8 例7-15 随机数函数 由函数的算法可知,它并不能返回真正的随机数。 尽管randomize函数产生的是“伪随机数”,但多数情况下可用作随机数。 randomize( )%5+1则产生1到5之间的随机数。 main函数中调用randomize函数产生了1000个1到5之间的随机数,最后输出了它产生1,2,3,4,5的个数。 9

资源预览图

7.3 限制文件作用域-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
1
7.3 限制文件作用域-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
2
7.3 限制文件作用域-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
3
7.3 限制文件作用域-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
4
7.3 限制文件作用域-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
5
7.3 限制文件作用域-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。