9.4变量的作用域和生存期1变量的作用域一个程序中定义的变量,只有在一定的范围之内才是有效的,这个范围称为该变量的作用域,局部变量和全局变量
9.4 变量的作用域和生存期 1 变量的作用域 一个程序中定义的变量,只有在一定的范围之内才 是有效的,这个范围称为该变量的作用域。 局部变量和全局变量
o局部变量凡是在函数内部定义的变量,都是局部变量。其作用域:从定义点开始到函数体或复合语句的末尾。形参、复合语句中定义的变量、main函数中定义的变量均是局部变量#include <stdio.h>main()long fac(int k)int m, n;long p; ←long c; ←int i;←p=1;scanf("%d%d",&m, &n) ;for(i=l;i<=k;i++)c=fac(m) / (fac (n)*fac(m-n))p=p*i;printf("%ld\n",c);return p;+
局部变量 凡是在函数内部定义的变量,都是局部变量。 其作用域:从定义点开始到函数体或复合语句的末尾。 形参、复合语句中定义的变量、main函数中定义的变量均是局部变量 #include <stdio.h> long fac(int k) { long p; int i; p=1; for(i=1;i<=k;i++) p=p*i; return p; } main() { int m,n; long c; scanf("%d%d",&m,&n); c=fac(m)/(fac(n)*fac(m-n)); printf("%ld\n",c); }
错例正确#include <stdio.h>#include <stdio.h>main()main()((int a,b;int a,b;scanf("%d%d", &a, &b) :scanf("%d%d",&a,&b);{ int t;[int t;t=a;t=a;a=b;a=b;b=t;b=t;1printf("t=%dn",t);printf("t=%d(n", t);printf("a=%d, b=%d\n",a, b) ;printf("a=%d, b=%d\n", a, b)1J1C2065: 't' : undeclared identifiererror
#include <stdio.h> main( ) { int a,b; scanf("%d%d",&a,&b); { int t; t=a; a=b; b=t; } printf("t=%d\n",t); printf("a=%d,b=%d\n",a,b); } #include <stdio.h> main( ) { int a,b; scanf("%d%d",&a,&b); { int t; t=a; a=b; b=t; printf("t=%d\n",t); } printf("a=%d,b=%d\n",a,b); } 错例 正确
全局变量?C语言程序中,凡是在函数外部定义的变量,都是全局变量。其作用域:从其定义点开始至本程序文件末尾例,编写一个求圆面积的被调函数以及调用它求圆环面积的主函数。mainOfloat area(float r) floatr1,r2,s0;float s;scanf("%f%f",&r1,&r2);s=3.14159*r*r;s0=area(r1)-area(r2);return s;7printf("圆环面积=%f\n",sO);1f利用实参->形参实现函数之间的数据传递!
全局变量 C语言程序中,凡是在函数外部定义的变量,都是全局变量。 其作用域:从其定义点开始至本程序文件末尾。 例 编写一个求圆面积的被调函数以及调用它求圆环面积的主 函数。 float area(float r) { float s; s=3.14159*r*r; return s; } main() { float r1,r2,s0; scanf("%f%f",&r1,&r2); s0=area(r1)-area(r2); printf("圆环面积=%f\n",s0); } 利用 实参-→形参 实现函数之间的数据传递!
main ()#include <stdio.h>(float r1l,r2,sl,s2,s0;float r, s;scanf("%f%f",&rl,&r2);void area()r=r1;s=3.14159*r*r;area( ;return;s1=s;1r=r2;area( ;s2=s;利用全局变量s0=s1-s2:实现函数之间的数据传递!printf("圆环面积=%f\n",so);1
#include <stdio.h> float r,s; void area() { s=3.14159*r*r; return; } main() { float r1,r2,s1,s2,s0; scanf("%f%f",&r1,&r2); r=r1; area(); s1=s; r=r2; area(); s2=s; s0=s1-s2; printf("圆环面积=%f\n",s0); } 利用 全局变量 实现函数之间的数据传递!