第六章 函数
第六章 函数
6.3变量的作用域 限于陆地 限于海洋 限于 于空中 作用域是某些事物起作用或有效的区域
2 6.3 变量的作用域 作用域是某些事物起作用或有效的区域。 限于陆地 限于海洋 限于空中
6.3变量的作用域 口程序中变量也有不同的使用范围,称为变量的作用域。变 量的作用域决定变量的可访问性 ⅴ。 id displayDiscount() 彐1 oat discount amt void main o float discount amt roid displayDiscounto) 局部变量:不能在函数外使用 全局变量:可以在整个程序中使用
3 ❑ 程序中变量也有不同的使用范围,称为变量的作用域。变 量的作用域决定变量的可访问性 6.3 变量的作用域 void displayDiscount() { float discount_amt; . . . . . . . . . } 局部变量:不能在函数外使用 float discount_amt; void main() { . . . . . . } void displayDiscount() { . . . . . . } 全局变量:可以在整个程序中使用
清华大学出版社 TSINGHUA UNIVERSITY PRESS 6.31局部变量 内部变量:在一个函数内部定义的变量 称内部变量。它只在本函数范围内有效, 即:只有在本函数内才能使用这些变量, 故称为“局部变量
6.3.1 局部变量 •内部变量:在一个函数内部定义的变量 称内部变量。它只在本函数范围内有效, 即:只有在本函数内才能使用这些变量, 故称为“局部变量”
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例 float f1(inta)/函数f Rint b, c /*a、b、C有效* char f2(int x, Int y )/*函数位* int y、i、j有效* void main() /*主函数 int mn /*m、n有效*/
例: float f1( int a) /* 函数f1 */ {int b,c; … /* a、b、c有效*/ } char f2(int x,int y) /* 函数f2 */ {int i,j; /* x、y、i、j有效*/ } void main( ) /* */ {int m,n; … /* m、n有效*/ }
清华大学出版社 TSINGHUA UNIVERSITY PRESS (1)主函数中定义的变量只在主函数中有效而不因为 在主函数中定义而在整个文件或程序中有效。主 函数也不能使用其他函数中定义的变量 (2)不同函数中可以使用相同名字的变量它们代表 不同的对象,互不干扰。 (3)形式参数也是局部变量。 (4)在一个函数内部可以在复合语句中定义变量这 些变量只在本复合语句中有效这种复合语句也称 为“分程序”或“程序块
(1)主函数中定义的变量只在主函数中有效,而不因为 在主函数中定义而在整个文件或程序中有效。主 函数也不能使用其他函数中定义的变量。 (2) 不同函数中可以使用相同名字的变量,它们代表 不同的对象,互不干扰。 (3) 形式参数也是局部变量。 (4) 在一个函数内部,可以在复合语句中定义变量,这 些变量只在本复合语句中有效,这种复合语句也称 为“分程序”或“程序块”
清华大学出版社 TSINGHUA UNIVERSITY PRESS #include maino inti=2j=3k;/*主函数体内定义的局部变 ki+ intk=8;/*复合语句定义的局部变量* printf("k=%odn", k) 和k=n”k)} k=8
#include main() { int i=2,j=3,k; /*主函数体内定义的局部变 量*/ k=i+j; { int k=8; /*复合语句定义的局部变量*/ printf("k=%d\n",k); } 程序执行结果为: printf("k=%d\n",k);} k=8 k=5
清华大学出版社 TSINGHUA UNIVERSITY PRESS 6.3.2全局变量 外部变量:函数之外定义的变量称为外 部变量。外部变量可以为本文件中其他 函数所共用。它的有效范围为从定义变 量的位置开始到本源文件结束。所以也 称全程变量
6.3.2 全局变量 •外部变量:函数之外定义的变量称为外 部变量。外部变量可以为本文件中其他 函数所共用。它的有效范围为从定义变 量的位置开始到本源文件结束。所以也 称全程变量
清华大学出版社 TSINGHUA UNIVERSITY PRESS 建议:不必要时不要使用全局变量,原因如下 ①全局变量在程序的全部执行过程中都占用存储单 元,而不是仅在需要时才开辟单元 ②使用全局变量过多,会降低程序的清晰性。在各 个函数执行时都可能改变外部变量的值,程序容易 出错。因此,要限制使用全局变量
建议:不必要时不要使用全局变量,原因如下: ① 全局变量在程序的全部执行过程中都占用存储单 元,而不是仅在需要时才开辟单元。 ② 使用全局变量过多,会降低程序的清晰性。在各 个函数执行时都可能改变外部变量的值,程序容易 出错。因此,要限制使用全局变量
清华大学出版社 TSINGHUA UNIVERSITY PRESS ③降低函数的通用性。因为函数在执行时要依赖于 其所在的外部变量。如果将一个函数移到另一个文 件中,还要将有关的外部变量及其值一起移过去 但若该外部变量与其他文件的变量同名时,就会出 现问题,降低了程序的可靠性和通用性。一般要求 把C程序中的函数做成一个封闭体,除了可以通过 实 形参”的渠道与外界发生联系外,没有 其他渠道
③降低函数的通用性。因为函数在执行时要依赖于 其所在的外部变量。如果将一个函数移到另一个文 件中,还要将有关的外部变量及其值一起移过去。 但若该外部变量与其他文件的变量同名时,就会出 现问题,降低了程序的可靠性和通用性。一般要求 把C程序中的函数做成一个封闭体,除了可以通过 “实参——形参”的渠道与外界发生联系外,没有 其他渠道