c语言程序设计教学辅导(六(编辑修改稿)内容摘要:

用域: 专指语句标号,供 goto 语句用。 Goto 语句只能转移到本函数定义中的一个带有语句标号的位置。  块作用域 变量 : 又 称为 局部变量。 一种情况: 在一条复合语句内定义, 作用域从定义点开始到复合语句结束。 另一种情况:函数定义中的形参变量,作用域为整个函数体。  函数定义体内 的自动变量和静态变量 函数定义体内的变量都属于块作用域 变量,即局部变量,但根据变量性质又分为 2种:一种叫自动变量,另一种叫静态变量。 如: void ff() { int z=0。 //自动变量,不赋初值,值不确定 static int k。 //静态变量,第 1次自动赋初值 0 k+=5。 //每次调用此函数在 k的原值上加 5 z+=5。 //每次都在 0上加 5 } int i。 for(i=1。 i=5。 i++) ff()。  分析变量作用域的程序举例 程序 1: include define NN 8 //文件域符号常量 int Num[NN]={12,10,8,3,5,0,7,2}。 //全局域数组 int Sum() { //求全局数组 Num[NN]中的所有元素之和 int i,s=0。 //i,s 为局部变量,作用域为此函数体 for(i=0。 iNN。 i++) s+=Num[i]。 6 return s。 //返回所求元素之和 } int Max() { //求全局数组 Num[NN]中的所有元素的最大值 int i,m=Num[0]。 //i,m 为局部变量,作用域为此函数体 for(i=1。 iNN。 i++) if(Num[i]m) m=Num[i]。 return m。 //返回所有元素的最大值 } void main() { int c。 //局部变量 ,从此处到主函数结束 c=Sum()+2*Max()。 //47+2*12=71 printf(c=%d\n,c)。 //输出结果: c=71 } 程序 2: include int Mul(int a[], int n)。 //函数原型声明语句 void main() { int b[5]={1,2,3,4,5}。 //只作用于主函数的数组 int r1,r2。 //只作用于主函数的局部变量 r1=Mul(b,5)。 //所有元素乘积,值 120 r2=Mul(b+2,3)。 //b[2]*b[3]*b[4],值 60 printf(r1=%d, r2=%d\n,r1,r2)。 //输出: r1=120, r2=60 } int Mul(int a[], int n) { //a 和 n的 作用域 为该函数 int i,p=1。 //局部变量,作用域到复合语句结束 for(i=0。 in。 i++) p*=a[i]。 求 a 数组中 n个元素之积 return p。 //返回 p 的值 } 程序 3: include int x=10。 //全局变量 void main() { int y=20。 //局部于整个主函数的变量 printf(x=%d, y=%d\n,x,y)。 //输出: x=10, y=20 { int x=30。 //局部于此复合语句内的变量,优先于外部同名变量 y=y+x。 //y 为外部的, x 为内部的 printf(x=%d, y=%d\n,x,y)。 //输出: x=30, y=50 } //内部的 x 的作用域就此结束 printf(x=%d, y=%d\n,x,y)。 //输出: x=10, y=50 } //y 作用域就此结束 7 //全局变量 x的作用域到整个程序运行结束 程序 4: include int Cdiv(int m, int n) //求出 m 和 n的最大公约数 { //m和 n只作用于此函数 int r。 //局部变量 if(mn) {r=m。 m=n。 n=r。 } //大者放 m,小者放 n while(r=m%n) {m=n。 n=r。 } //循环结束时 n 的值为最大公约数 return n。 //返回 n值 } void main() { int m,n。 //此处的 m和 n只作用于主函数 printf(输入两个正整数求其最大公约数 : )。 scanf(%d %d,amp。 m,amp。 n)。 printf(%d 和 %d 的最大公约数为 : %d\n,m,n,Cdiv(m,n))。 //进行 Cdiv(m,n)调用时, m 和 n 的值分别对应传送, //在 Cdiv(m,n)的函数体中对 m和 n 的修改,与此处的 m和 n无关 } //允许不同作用域的变量同名 运行结果: 输入两个正整数求其最大公约数 : 25 40 25 和 40 的最大公约数为 : 5 程序 5:。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。