




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
变量的作用域函数定义变量的三种情况在一个函数体的声明部分定义在一个函数体内,复合语句的开始处定义在所有函数外面定义局部变量定义在一个函数(包括主函数)内部定义的变量称为局部变量(也称为内部变量)局部变量只在本函数内起作用,退出本函数,变量即被释放(清除),其值就不能再被引用说明函数体内复合语句中定义的变量,其作用域仅限于复合语句以内,即该变量定义的大括号对之内形参也是局部变量【例1:】局部变量的作用范围voidmain(){intx,y;…
{inti,j;…}}intmax(intx,inty){intz;…..}i和j有效范围x和y有效范围x、y、z有效范围【例2:】在多个函数中出现同名的局部变量intf(inta){
a=a+4;return(a);}voidmain(){inta=3;printf(“%d\n”,f(a));printf(“%d”,a);}运行结果:形参a的作用范围main函数中的局部变量a的作用范围73全局变量(外部变量)定义在所有函数外面定义的变量称为全局变量全局变量的默认作用范围是从定义变量的位置开始到本程序文件的结束可使用全局变量获得多于一个的返回值,增强函数之间的数据联系通道【例3:】全局变量的作用范围intp=1,q=5;//外部变量floatf1(inta)//定义函数f1{intb,c;…}charc1,c2;//外部变量
charf2(intx,inty)//定义函数f2{inti,j;…}voidmain()//主函数
{intm,n;…}全局变量c1,c2的作用范围全局变量p,q的作用范围全局变量(外部变量)说明若在定义全局变量之前需要引用该全局变量,则需要进行声明,一般格式为:
extern类型名变量名;【例4:】区分全局变量的声明与定义externintn;
//全局变量的声明voidfun(){n-=20;}intn=100;
//全局变量的定义voidmain(){printf(“n=%d\n”,n);for(;n>=60;){fun();printf(“n=%d\n”,n);}}全局变量的定义与声明不是一回事。定义只能有一次,而全局变量的声明可进行多次在同一源文件中,全局变量与局部变量同名,则局部变量在其作用范围内屏蔽全局变量,即局部变量起作用,全局变量不起作用【例5:】外部变量与局部变量同名#include<stdio.h>inta=3,b=5;//定义全局变量a,bvoidmain(){intmax(inta,intb);//声明函数原型inta=8;//定义主函数的局部变量a
printf(“%d”,max(a,b));//访问局部变量a、全局变量b}intmax(inta,intb)//形参a,b为max函数的局部变量{intc;c=a>b?a:b;//访问局部变量a、breturn(c);}a=8b=5运行结果为:8由于函数的调用只能带回一个返回值,因此有时可以利用全局变量增加与函数联系的渠道,从函数得到一个以上的返回值若在一个函数中改变了全局变量的值,则其后引用该变量时,得到的是被改变了的值【例6:】有一个一维数组,内放10个学生成绩,编写一个函数,求出平均分,最高分和最低分解题思路希望从函数得到3个结果值可以把平均值作为函数值返回,另外两个(最大值、最小值)可以使用全局变量程序实现#include<stdio.h>floatMax=0,Min=0;//全局变量floataverage(floatarray[],intn)
//定义函数,第一个形参为数组{inti;
floataver,sum=array[0];
Max=Min=array[0];
for(i=1;i<n;i++){
sum=sum+array[i];if(array[i]>Max)Max=array[i];
elseif(array[i]<Min)Min=array[i];
}aver=sum/n;return(aver);//返回平均值
}voidmain(){floatave,score[10];
inti;
for(i=0;i<10;i++)
scanf(“%f”,&score[i]);
ave=average(score,10);
printf(“max=%6.2f\nmin=%6.2f\naverage=%6.2f\n”,Max,Min,ave);}建议非必要时,不要使用全局变量,因为:占用资源多,全局变量在程序的全部执行过程中都占用存储单元。通用性差。因为函数在执行时要依赖于其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 司机雇佣劳务合同范本
- 化学助剂采购合同范本
- 丹厦店面租房合同范本
- 中央团校培训心得体会
- 运城小学英语试卷
- 低压电工试题库含参考答案
- 会员服装租赁合同范本
- 体现返利合同范本
- 中级电工考试模拟题(附参考答案)
- 烹饪原料知识模考试题含参考答案
- 2025年湖南理工职业技术学院单招职业技能测试题库一套
- 2025年专利权侵权和解协议书范本
- 2024中考百日誓师大会动员讲话稿
- 2025年中国广州轨道交通行业市场全景评估及投资前景展望报告
- 教职工开学安全第一课培训
- 2025年贵州贵安发展集团有限公司招聘笔试参考题库含答案解析
- 2024-2025学年北京西城区八年级初二(上)期末英语试卷(含答案)
- 2024年社区工作者考试时事政治模拟题及答案
- 物业服务行业礼仪培训
- 22陈涉世家 司马迁 公开课一等奖创新教学设计 度部编版初中语文九年级下册
- 2021年饱和蒸汽及过热蒸汽焓值表
评论
0/150
提交评论