
第7章函数本章知识点7.1函数概述7.2函数的定义和使用7.3嵌套调用与递归调用7.4 变量与函数7.5随机数函数
第7章 函数 本 章 知 识 点 7.1 函数概述 7.2 函数的定义和使用 7.3 嵌套调用与递归调用 7.4 变量与函数 7.5 随机数函数

7.4变量与函数---P131--136、变量的作用域:变量有效作用的范围。变量分类(按作用域)局部变量(localvariable)函数内定义,只在本函数内才能使用。>复合语句中定义,只在本复合语句范围内有效全局变量(globalvariable)函数外定义,从定义变量的位置开始到本源文件结束
7.4 变量与函数-P131-136 一、变量的作用域:变量有效作用的范围。 ◼ 变量分类(按作用域) ◆ 局部变量(local variable) ➢ 函数内定义,只在本函数内才能使用。 ➢ 复合语句中定义,只在本复合语句范围内有效。 ◆ 全局变量(global variable) ➢ 函数外定义,从定义变量的位置开始到本源文件 结束

1.局部变量的作用域doublef( int a)a、b、c仅在f 函数内有效intb,c;a、b类似于不同班的同名学生int main()a,b;inta、b仅在main函数内有效return O;
① double f( int a) ② { int b,c; ③ . ④ } ⑤ int main( ) ⑥ { int a,b; ⑦ . ⑧ return 0; ⑨ } a、b类似于不同班 的同名学生. a、b仅在main函 数内有效. a、b、c仅在 f 函数 内有效. 1. 局部变量的作用域

1.局部变量的作用域a、b在main函int main ()1数内有效2(int a,b;34intCc仅在此复合5语句内有效
① int main ( ) ② { int a,b; ③ . ④ { int c; ⑤ . ⑥ } ⑦ . ⑧ } a、b在main函 数内有效 c 仅在此复合 语句内有效 1. 局部变量的作用域

说明如下:关于局部变量的作用域,理(1)主函数main中定义的变量只能在主函数main中使用,不能在其它函数中使用。(2)主函数main中不能使用其它函数中定义的变量。因为主函数也是一个函数,主函数main与其它函数是平行关系,(3)3形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。(4)允许在不同的函数中使用相同的变量名,它们代表不同的变量,分配不同的存储单元,互不干扰
关于局部变量的作用域,说明如下: (1)主函数main中定义的变量只能在主函数main中使用, 不能在其它函数中使用。 (2)主函数main中不能使用其它函数中定义的变量。因为主 函数也是一个函数,主函数main与其它函数是平行关系。 (3)形参变量是属于被调函数的局部变量,实参变量是属于 主调函数的局部变量。 (4)允许在不同的函数中使用相同的变量名,它们代表不同 的变量,分配不同的存储单元,互不干扰

例:局部变量的作用域#includeintmain()int i=2,j=3,k;k=i+j;Ⅱ复合语句内定义k6intk=10;printf("(1)k=%din",k);F(1) k=1(2) k=5printf(" (2) k=%din",k);return O;
例:局部变量的作用域。 ① #include ② int main() ③ { int i = 2, j = 3 , k ; ④ k = i + j; ⑤ { int k=10; // 复合语句内定义k ⑥ printf(" (1) k=%d\n",k); ⑦ } ⑧ printf(" (2) k=%d\n",k); ⑨ return 0; ⑩ }

2、全局变量的作用域>全局变量:在函数之外定义的变量。>全局变量可以为本程序中其它函数所共用。>全局变量的有效范围:从定义变量的位置开始到本程序结束
2、全局变量的作用域 ➢ 全局变量:在函数之外定义的变量。 ➢ 全局变量可以为本程序中其它函数所共用。 ➢ 全局变量的有效范围:从定义变量的位置开始到 本程序结束

int p=1,q=5;p、q的有效范围23charc1,c2;456int main ()c1、c2的有效范围(89return 0;?1
① int p=1,q=5; ② . ③ char c1,c2; ④ . ⑤ ⑥ int main ( ) ⑦ { ⑧ . ⑨ return 0; ⑩ } p、q的有效范围 c1、c2的有效范围

若全局变量与局部变量同名,结果?#includeinta=3,b=5;l/全局变量b为全局变量int max(int a,int b);int main()int a=8;6printf("%din",max(a,b);Nreturn 0:Ta为局部变量int max(int a,int b)10int c;c=a>b?a:b;a、b、c为局部变量return c;13
① #include ② int a=3,b=5; //全局变量 ③ int max(int a,int b); ④ int main() ⑤ { int a=8; ⑥ printf("%d\n",max(a,b)); ⑦ return 0; ⑧ } ⑨ int max(int a,int b) ⑩ { int c; ⑪ c=a>b?a:b; ⑫ return c; ⑬ } a为局部变量 b为全局变量 若全局变量与局部变量同名,结果? a、b、c为局部变量

说明如下:关于全局变量的作用域,作用:增加函数间数据联系的渠道。空间效率:程序执行中全程占用存储单元》高耦合:使函数的通用性降低---函数内部执行要受到外部变1的影响。量(全局变量)可读性:使用全局变量过多,会降低程序的清晰性>在各个函数执行时都可能改变全局变量值,程序易出错。> 被屏蔽:如果在同一个源程序中,全局变量与局部变量同名则在局部变量的作用域内,全局变量被“屏蔽”--全局变量不起作用结论:除非必要,不使用全局变量
关于全局变量的作用域,说明如下: ➢ 作用:增加函数间数据联系的渠道。 ➢ 空间效率:程序执行中全程占用存储单元。 ➢ 高耦合:使函数的通用性降低-函数内部执行要受到外部变 量(全局变量)的影响。 ➢ 可读性:使用全局变量过多,会降低程序的清晰性 ➢ 在各个函数执行时都可能改变全局变量值,程序易出错。 ➢ 被屏蔽:如果在同一个源程序中,全局变量与局部变量同名, 则在局部变量的作用域内,全局变量被“屏蔽”-全局变量 不起作用 结论:除非必要,不使用全局变量