- 0
- 0
- 约8.07千字
- 约 30页
- 2019-12-08 发布于广东
- 举报
第9章 变量的存储类型和动态分配内存 C语言是通过函数来实现模块化程序设计的。所以较大的C语言应用程序,往往是由多个函数组成的,每个函数分别对应各自的功能模块。 9.1 内部变量与外部变量 9.2 内部函数与外部函数 9.3 变量的动态存储与静态存储 [Return] 9.1 内部变量与外部变量 C语言中所有的变量都有自己的作用域。变量说明的位置不同,其作用域也不同,据此将C语言中的变量分为内部变量和外部变量。 9.1.1 内部变量 9.1.2 外部变量 [Return] 9.1.1 内部变量 在一个函数内部说明的变量是内部变量,它只在该函数范围内有效。 也就是说,只有在包含变量说明的函数内部,才能使用被说明的变量,在此函数之外就不能使用这些变量了。所以内部变量也称“局部变量”。 例如: int f1(int a) /*函数f1*/ { int b,c; …… } /*a,b,c作用域:仅限于函数f1()中*/ ? int f2(int x) /*函数f2*/ { int y,z; …… } /*x,y,z作用域:仅限于函数f2()中*/ ? main() { int m,n; …… } /*m,n作用域:仅限于函数main()中*/ 关于局部变量的作用域还要说明以下几点: 1.主函数main()中定义的内部变量,也只能在主函数中使用,其它函数不能使用。同时,主函数中也不能使用其它函数中定义的内部变量。因为主函数也是一个函数,与其它函数是平行关系。这一点是与其它语言不同的,应予以注意。 2.形参变量也是内部变量,属于被调用函数;实参变量,则是调用函数的内部变量。 3.允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。 4.在复合语句中也可定义变量,其作用域只在复合语句范围内。 [Return] 9.1.2 外部变量 在函数外部定义的变量称为外部变量。以此类推,在函数外部定义的数组就称为外部数组。 外部变量不属于任何一个函数,其作用域是:从外部变量的定义位置开始,到本文件结束为止。 外部变量可被作用域内的所有函数直接引用,所以外部变量又称全局变量。 [案例7.9] 输入长方体的长(l)、宽(w)、高(h),求长方体体积及正、侧、顶三个面的面积。 /*案例代码文件名:AL7_9.C*/ /*功能:利用全局变量计算长方体的体积及三个面的面积*/ int s1,s2,s3; int vs(int a,int b,int c) { int v; v=a*b*c; s1=a*b; s2=b*c; s3=a*c; return v; } main() {int v,l,w,h; clrscr(); printf(\ninput length,width and height: ); scanf(%d%d%d,l,w,h); v=vs(l,w,h); printf(v=%d s1=%d s2=%d s3=%d\n,v,s1,s2,s3); getch(); } [程序演示] 对于全局变量还有以下几点说明: (1)外部变量可加强函数模块之间的数据联系,但又使这些函数依赖这些外部变量,因而使得这些函数的独立性降低。 从模块化程序设计的观点来看这是不利的,因此不是非用不可时,不要使用外部变量。 (2)在同一源文件中,允许外部变量和内部变量同名。在内部变量的作用域内,外部变量将被屏蔽而不起作用。 (3)外部变量的作用域是从定义点到本文件结束。如果定义点之前的函数需要引用这些外部变量时,需要在函数内对被引用的外部变量进行说明。外部变量说明的一般形式为: extern 数据类型 外部变量[,外部变量2……]; 注意:外部变量的定义和外部变量的说明是两回事。外部变量的定义,必须在所有的函数之外,且只能定义一次。而外部变量的说明,出现在要使用该外部变量的函数内,而且可以出现多次。 [案例7.10] 外部变量的定义与说明。 /*案例代码文件名:AL7_10.C*/ int vs(int xl,int xw) { extern int xh; /*外部变量xh的说明*/ int v; v=xl*xw*xh;
原创力文档

文档评论(0)