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
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。