第8章第8节 §88局部变量和全局变量 局部变量 1概念—在一个函数内定义的变量为局部变量,只在本函数范围内有效 float fl(int a, int b) Rint c; a,b,c为局 c=a+b: 部变量 注意:们中的变量a,b,c 与主函数中的变量a,b,c 不是同一变量 main fint i,j, a, b, c; ,j,b为局 部变量 2.说明①主函数中定义的变量是局部变量,只在主函数中有效。 ②函数形参是局部变量,只在本函数范围内有效。 ③不同函数中的(局部变量可以同名,但互不干扰。 ④复合语句内可定义变量,只在该复合语句的范围内有效
§8.8 局部变量和全局变量 第8章第8节 一. 局部变量 1.概念——在一个函数内定义的变量为局部变量,只在本函数范围内有效 float f1(int a, int b) {int c; c=a+b; ...... } main() { int i, j, a, b,c; ...... } a, b, c为局 部变量 i, j,a,b为局 部变量 2. 说明 ① 主函数中定义的变量是局部变量,只在主函数中有效。 ② 函数形参是局部变量,只在本函数范围内有效。 ③ 不同函数中的(局部)变量可以同名,但互不干扰。 ④ 复合语句内可定义变量,只在该复合语句的范围内有效。 注意:f1中的变量a,b,c 与主函数中的变量a,b,c 不是同一变量
第8章第8节 main fint 1,a; a=4 printf( i=o oa\n Rint a, 同 变量 a=2 局部变量,只在 printf("a=%dn", a); 本范围内有效 pint"a=%小道为:2 值为:4 二全局变量 1概念—在函数之外定义的变量为全局变量(又名:外部变量),可被 本文件中其他函数共用。 2.有效范围(作用域)从定义变量的位置,到文件结束
main() {int i,a; i=1; a=4; printf("i=%d\n",i); {int a, a=2; printf("a=%d\n",a); } printf("a=%d\n",a); } 第8章第8节 同一 变量 局部变量,只在 本范围内有效 二. 全局变量 1.概念——在函数之外定义的变量为全局变量(又名:外部变量),可被 本文件中其他函数共用。 2. 有效范围(作用域)——从定义变量的位置,到文件结束。 值为:2 值为:4
第8章第8节 例: int p,q为全局变量 float fi(int a) 全局变量p,q的作用 Rint b, c; 范围。 一a,b,c为局部变量}n0,n0,和mim0函数 中都可以引用p,q charal. c2 c1,c2为全局变量 char f2(intx, int y) fint ], j →x,yii为局部变量|全局变量c2的作用 范围。 只有20和main0函数 可以引用c1,c2。 main( fint m, n; →m,n为局部变量
第8章第8节 例: int p=1, q=5; float f1(int a) {int b, c; ...... } char c1, c2; char f2(int x, int y) {int i, j; } main() {int m, n; ...... } p, q 为全局变量 a, b, c为局部变量 c1, c2 为全局变量 x, y, i, j为局部变量 m, n 为局部变量 全局变量 p, q 的作用 范围。 f1(), f2(), 和main() 函数 中都可以引用p, q。 全局变量 c1, c2 的作用 范围。 只有f2() 和main() 函数 可以引用c1,c2
第8章第8节 3.全局变量的使用 ①作为程序中各函数的公共变量(即同一文件中所有函数均可引用), 例 float pi=314; 全局变量 float fI(float r) Rreturn(pi*r*r); 以p=3.14代入计算 float f2(float) freturn(2.0*pi*r); float f3(float) 以p=3.1416代入计算 { return(4.0/3.0*pi*r*rr);} maint floatfi(float); float f2 (flat); float f3 (flat); float s..v r scant“ r”,&r); 此时pi=3.14 注:任何一个函数 s=fI(r) 中改变了全局变量 pi=3.1416; 的值,将影响到以后 l=f2(r);v=f3(r); 此时pi=3.1416 的计算 print(“s,yv=%,%f,%fn”,s,l,v);}
第8章第8节 3. 全局变量的使用 ① 作为程序中各函数的公共变量(即同一文件中所有函数均可引用), float pi=3.14; float f1(float r) {return(pi*r*r);} float f2(float r) {return(2.0*pi*r);} float f3(float r) {return(4.0/3.0*pi*r*r*r);} main() {float f1(float); float f2(flaot); float f3(flaot); float s, l, v, r scanf(“%f”,&r); s=f1(r); pi=3.1416; l=f2(r); v=f3(r); printf(“s,l,v=%f,%f,%f\n”,s,l,v); } 例 全局变量 此时pi=3.14 此时pi=3.1416 注: 任何一个函数 中改变了全局变量 的值, 将影响到以后 的计算 以pi=3.1416代入计算 以pi=3.14代入计算
第8章第8节 ②利用全局使函数返回多个值 例815:求一个数组各元素平均值,最大值,最小值。 float max. min 定义全局变量 main float average(flaot a[l, int n) fint i; Float average(flat a[, int n) float aver sum=0.0 float ave, score[10; max=a 0; min=a0; int for(i=0; K<=n-1; i++) for(i=0;<10;i++) sum=sumtail; scanf(“%r,& scored if(aimax)max=a; ave=average(score, 10; 求得平均值 else if(a[i]<min)min=a[]; printf("max, min, ave=%f, %f,%fn max, min, ave); aver=sum/n return(aver);+返回平均值
例8.15: 求一个数组各元素平均值, 最大值, 最小值。 float max, min float average(flaot a[], int n) {int i; float aver, sum=0.0; max=a[0]; min=a[0]; for(i=0;i<=n-1;i++) {sum=sum+a[i]; if(a[i]>max) max=a[i]; else if(a[i]<min) min=a[i]; } aver=sum/n; return(aver); } main() {float average(flaot a[], int n); float ave,score[10]; int i; for(i=0;i<10;i++) scanf(“%f”,&score[i]); ave=average(score,10); printf(“max,min,ave=%f,%f,%f\n”, max,min,ave); } 返回平均值 求得平均值 定义全局变量 ② 利用全局使函数返回多个值 第8章第8节