正在加载图片...
靳润昭C语言教程讲义 2001年2月17日 printf("%d\n", k) 本程序在main中定义了i,j,k三个变量,其中k未赋初值。而在复合语句内又定义了 个变量k,并赋初值为8。应该注意这两个k不是同一个变量。在复合语句外由main定义 的k起作用,而在复合语句内则由在复合语句内定义的k起作用。因此程序第4行的k为 main所定义,其值应为5。第7行输出k值,该行在复合语句内,由复合语句内定义的k 起作用,其初值为8,故输出值为8,第9行输出i,k值。i是在整个程序中有效的,第7 行对i赋值为3,故以输出也为3。而第9行已在复合语句之外,输出的k应为main所定义 的k,此k值由第4行已获得为5,故输出也为5。 882全局变量 全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于 个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为 extern。但在一个函数 之前定义的全局变量,在该函数内使用可不再加以说明 例如: int a, b /*外部变量* void fro /*函数f1*/ float x. /*外部变量*/ zo /*函数fz*/ maino /*主函数*/ 从上例可以看出a、b、x、y都是在函数外部定义的外部变量,都是全局变量。但x,y定 义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。a,b定义在源程 序最前面,因此在f1,f2及main内不加说明也可使用 【例8.13】输入正方体的长宽高1,W,h。求体积及三个面x*y,x*Z,y*z的面积 int vs( int a, int b, int c) sI=a*b: 第19页靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第19页 printf("%d\n",k); } 本程序在 main 中定义了 i,j,k 三个变量,其中 k 未赋初值。而在复合语句内又定义了 一个变量 k,并赋初值为 8。应该注意这两个 k 不是同一个变量。在复合语句外由 main 定义 的 k 起作用,而在复合语句内则由在复合语句内定义的 k 起作用。因此程序第 4 行的 k 为 main 所定义,其值应为 5。第 7 行输出 k 值,该行在复合语句内,由复合语句内定义的 k 起作用,其初值为 8,故输出值为 8,第 9 行输出 i,k 值。i 是在整个程序中有效的,第 7 行对 i 赋值为 3,故以输出也为 3。而第 9 行已在复合语句之外,输出的 k 应为 main 所定义 的 k,此 k 值由第 4 行已获得为 5,故输出也为 5。 8.8.2 全局变量 全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于 一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为 extern。但在一个函数 之前定义的全局变量,在该函数内使用可不再加以说明。 例如: int a,b; /*外部变量*/ void f1() /*函数 f1*/ { …… } float x,y; /*外部变量*/ int fz() /*函数 fz*/ { …… } main() /*主函数*/ { …… } 从上例可以看出 a、b、x、y 都是在函数外部定义的外部变量,都是全局变量。但 x,y 定 义在函数 f1 之后,而在 f1 内又无对 x,y 的说明,所以它们在 f1 内无效。a,b 定义在源程 序最前面,因此在 f1,f2 及 main 内不加说明也可使用。 【例 8.13】输入正方体的长宽高 l,w,h。求体积及三个面 x*y,x*z,y*z 的面积。 int s1,s2,s3; int vs( int a,int b,int c) { int v; v=a*b*c; s1=a*b; s2=b*c;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有