- 1
- 0
- 约1.74万字
- 约 81页
- 2021-12-11 发布于广东
- 举报
变量的属性 数据类型:变量所持有的数据的性质(操作属性) 存储属性 存储器类型:寄存器、静态存储区、动态存储区 生存期:变量在某一时刻存在-------静态变量与动态变量 作用域:变量在某区域内有效-------局部变量与全局变量 变量的存储类型 auto -----自动型 register-----寄存器型 static ------静态型 extern -----外部型 变量定义格式: [存储类型] 数据类型 变量表; 如: int sum; auto int a,b,c; register int i; static float x,y; 第三十页,共81页 变量的作用域 程序中所声明的在程序的那一部分中是可用的。 只有在自己的作用域中才可用。 第三十一页,共81页 从作用域角度考虑分为:内部变量、外部变量 内部变量(局部变量)的作用域:是定义它的函数内或复合语句内,在它的作用域之外,内部变量是不可见的,也就是说,一个函数内定义的内部变量是不能被其它的函数所引用的。 特性:有助实现信息隐蔽,即使不同的函数定义了同名的内部变量,也不会相互影响。 第三十二页,共81页 内部变量---局部变量 定义:在函数内定义,只在本函数内有效 说明: main中定义的变量只在main中有效 不同函数中同名变量,占不同内存单元 形参属于局部变量 可定义在复合语句中有效的变量 局部变量可用存储类型:auto register static (默认为auto) float f1(int a) { int b,c; ……. } char f2(int x,int y) { int i,j; …… } main() { int m,n; ……. } a,b,c有效 x,y,i,j有效 m,n有效 第三十三页,共81页 复合语句中变量 #define N 5 main() { int i; int a[N]={1,2,3,4,5}; for(i=0;iN/2;i++) { int temp; temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } for(i=0;iN;i++) printf(%d ,a[i]); } 运行结果:5 4 3 2 1 例 不同函数中同名变量 main() { int a,b; a=3; b=4; printf(main:a=%d,b=%d\n,a,b); sub(); printf(main:a=%d,b=%d\n,a,b); } sub() { int a,b; a=6; b=7; printf(sub:a=%d,b=%d\n,a,b); } 运行结果: main:a=3,b=4 sub:a=6,b=7 main:a=3,b=4 第三十四页,共81页 外部变量(全局变量) 定义:在函数外面定义的变量。 外部变量的作用域:对于只有一个源程序文件构成的程序,外部变量的作用域是从定义它的位置开始,直至它所在源程序文件的结束。 特点:外部变量的使用增加了函数之间传递数据的途径,在外部变量的作用域内的任何函数都能引用该外部变量,一个函数对外部变量的修改,能影响到其它引用这个变量的函数;因此对外部变量的使用不当,会产生意外的错误。 第三十五页,共81页 float max,min; float average(int n) { int i; float x; scanf(“%f”,x); max=min=x; for(i=2;in;i++) {scanf(“%f”,x); if(xmax) max=x; else if(xmin) min=x; sum+=x;} return(sum/n); } main() { int n; float ave; scanf(“%d”,n); ave=average(n); printf(max=%6.2f\nmin=%6.2f\n average=%6.2f\n,max,min,ave); } 作用域 max min 第三十六页,共81页 int a=3,b=5; max(int a, int b) { int c; c=ab?a:b;
原创力文档

文档评论(0)