C语言学习第八章中文_第1页
C语言学习第八章中文_第2页
C语言学习第八章中文_第3页
C语言学习第八章中文_第4页
C语言学习第八章中文_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

变量的作用域

与变量的存储类别

8.8局部变量和全局变量--8.8.1局部变量内部变量:在一个函数内部定义的变量称内部变量。它只在本函数范围内有效,即:只有在本函数内才能使用这些变量,故称为“局部变量”。floatf1(inta)/*函数f1*/{

intb,c;…/*a、b、c有效*/}charf2(intx,inty)/*函数f2*/{inti,j;/*x、y、i、j有效*/}voidmain()/*主函数*/{intm,n;…/*m、n有效*/}8.8局部变量和全局变量--8.8.1局部变量内部变量:⑴主函数中定义的变量只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。⑵不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。⑶形式参数也是局部变量。⑷在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。8.8局部变量和全局变量--8.8.1局部变量内部变量:voidmain(){inta,b;……{intc;c=a+b;c在此范围内有效a,b在此范围内也有效

……

}…}复合语句也称为“分程序”或“程序块”。8.8局部变量和全局变量--8.8.2全局变量外部变量:函数之外定义的变量称为外部变量。外部变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。所以也称全程变量。

8.8局部变量和全局变量--8.8.2全局变量外部变量:intp=1,q=5;/*外部变量*/floatf1(inta)/*定义函数f1*/{intb,c;…}charc1,c2;/*外部变量*/charf2(intx,inty)/*定义函数f2*/{inti,j;全局变量p,q的作用范围

…全局变量c1,c2的作用范围}voidmain()/*主函数*/{intm,n;…}

8.8局部变量和全局变量--8.8.2全局变量例8.15有一个一维数组,内放10个学生成绩,写一个函数,求出平均分、最高分和最低分。#include<stdio.h>floatMax=0,Min=0;

/*全局变量*/voidmain()

{floataverage(floatarray[],intn);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);

}8.8局部变量和全局变量--8.8.2全局变量floataverage(floatarray[],intn)/*定义函数,形参为数组*/

{inti;

floataver,sum=array[0];

Max=Min=array[0];

for(i=1;i<n;i++)

{if(array[i]>Max)Max=array[i];

elseif(array[i]<Min)Min=array[i];

sum=sum+array[i];

}

aver=sum/n;

return(aver);

}8.8局部变量和全局变量--8.8.2全局变量8.域8局部战变量呢和全容局变族量--8.碌8.忽2全局恳变量建议附:一般关不使思用全圾局变许量,年因为镰:⑴全局酬变量本在程绣序的哗全部兔执行朗过程吊中都唉占用填存储妥单元懂,而躁不是固仅在努需要腿时才继开辟辛单元唯。⑵使用尾全局矛变量甜过多泡,会帝降低冷程序物的清厦晰性爽。在视各个动函数奔执行蛾时都面可能咬改变费外部钩变量俯的值持,程窄序容桂易出版错。朵因此侮,要股限制欲使用姓全局群变量殊。⑶降低响函数指的通涛用性作。因墨为函亿数在颈执行粥时要供依赖违于其魔所在所的外永部变绣量。挖如果秤将一跑个函课数移骑到另性一个骑文件奔中,光还要费将有过关的赞外部秒变量奸及其贱值一早起移虎过去而。但灾若该巷外部哥变量掘与其厅他文缺件的毅变量精同名枯时,争就会孤出现旅问题厚,降答低了择程序蹦的可用靠性拾和通治用性羽。一义般要勉求把蜜C程划序中际的函立数做厌成一壁个封亭闭体绞,除帜了可严以通塘过“赖实参——形参村”的朱渠道杠与外档界发嘉生联宽系外浙,没炉有其帮他渠适道。8.职8局部泼变量硬和全情局变方量--8.吗8.渐2全局淘变量例8.栏16外部戴变量异与局袍部变取量同姑名。#i图nc傻lu辛de作<st佳di无o.仗h>in方ta=犹3,旺b=发5;夫/悠*a,紧b为外虾部变纳量*/a,浩b作用布范围vo徒id次m暗ai铸n治(奴){in威ta=洗8;秤/金*a为局年部变犁量*/局部揉变量a作用摊范围pr俗in悼tf铁(“挨%d伞”,循ma每x(布a,辰b))秘;全局幼变量b的作字用范摄围}ma堪x(槐in临ta,in蜡tb)角/针*a,怖b为局童部变推量*/{in饲tc;c=傻a>b?单a∶牵b;形参a、b作用馋范围re晶tu束rn欣(陶c)给;}8.冠9变量挽的存草储类尤别--8.谱9.奴1动态纺存储米方式积与静农态存舒储方请式从变脆量的锋作用旧域(刺即从侮空间着)角限度来麦分,汤可分闯为:全局陕变量局部疮变量从变颜量值岩存在前的时辆间角下度来亚分,查可分扰为:静态柿存储供方式宁:指礼在程贫序运脑行期辆间由配系统鸣分配瘦固定葱的存腾储空恐间的理方式吹。动态浴存储进方式议:则炊是在妻程序泳运行叉期间罚根据盼需要缓进行否动态设的分罩配存斗储空徒间的亮方式火。该卧存储散空间攀可分枪为:⑴程序君区⑵静态弹存储吉区⑶动态独存储摇区8.兰9变量营的存亩储类忠别--8.辅9.荷1动态粱存储些方式叮与静淹态存津储方透式变量接和函从数有香两个粘属性拜:数据居类型数据号的存辅储类箱别:数据闯在内眯存中桑存储饭的方热式。存储恳方式请分为疑两大等类:静态乏存储半类动态擦存储哄类⑴自动尸的(au扇to)⑵静态岁的(st着at桐ic)⑶寄存墨器的冲(re线gi挠st愁er)⑷外部振的(ex语te泽rn)根据杰变量贫的存鼠储类核别,恳可以址知道碧变量禁的作酸用域鬼和生丧存期竿。8.骑9变量港的存研储类万别--8.左9.港2推au浊to变量自动殊变量au泛to:专门状声明蒙为st曾at垫ic存储翅类别乘的局葛部变走量都基是动史态分效配存挺储空浪间,使在调冠用该谷函数辛时系筋统会绿给它魔们分涂配存童储空赵间,拜在函星数调剩用结然束时歉就自旺动释粪放这唇些存槐储空名间。钳因此待这类局部云变量称为画自动本变量覆。自动拴变量奏用关僻键字au战to作存农储类撕别的伞声明棕。函数奶中的苏形参胁和在卖函数奔中定艘义的豪变量(包括庸在复裁合语瞧句中精定义斧的变遗量),都晌属此鼻类。例如起:in芽tf(搁in搅ta)驳/*定库义f函数棋,a为形祝参*/{险a际ut倡oin羡tb,梁c=3比;爷/*定义b、c为自屠动变声量*/…}8.使9变量治的存登储类习别--8.消9.败3用st题at没ic声明悉局部及变量静态咸变量st敏at杆ic:当函戚数中宜的局柿部变饲量的话值在救函数谢调用等结束政后不馋消失旱而保舌留原郑值时叼,该蜘变量限称为因静态便局部美变量昨。用关吹键字st葵at活ic进行教声明榨。8.擦9变量圈的存属储类产别--8.晕9.喜3用st批at鬼ic声明竟局部煮变量例8.享17考察意静态远局部绳变量锐的值蹄。#i按nc生lu将de刷<st要di纵o.猛h>vo访id扎ma应in斧(棍){in过tf(玻in互t);in蜻ta=搁2,轮i;fo乖r雀(影i=洒0;跨i雷<3表;虏i+错+)pr库in钱tf愁(“盯%d肿”,胖f(贵a);}in鼻tf(广in淹ta){研a挽ut墓oin湾tb=公0;st旺at判ic件c狭=3疲;b=淡b+汪1;c=摘c+宗1;re治tu却rn需(a+厉b+怨c);}8.虹9变量雄的存吧储类吓别--8.幅9.豆3用st哄at聪ic声明新局部旋变量对静蛇态局叉部变陵量的缓说明忘:⑴静态稀局部食变量妥属静难态存院储类掉别,蓬在静毅态存虎储区壮内分呈配存郊储单捆元。良在程蜻序整踩个运珠行期江间都翅不释渐放。马而自骆动变购量(塔即动蜡态局屠部变燃量)播属动盾态存似储类恋别,驴占动席态存版储区升空间斯而不归占静欺态存焰储区躬空间而,函鄙数调赤用结蜻束后叛即释疼放。⑵对静共态局寒部变不量是成在编誉译时雪赋初何值的背,即午只赋辜初值纤一次怕,在县程序肢运行降时它骑已有辽初值皆。以饼后每阻次调绿用函抹数时分不再备重新盗赋初拣值而队只是料保留油上次箭函数发调用倘结束哗时的怨值。⑶如在贵定义牢局部状变量搂时不斤赋初走值的谢话,壳则对碎静态枕局部娃变量社来说宏,编啄译时贷自动算赋初哄值0驼(对击数值尺型变剖量)沿或空拨字符炮(对谎字符颤变量闷)。咸而对重自动像变量佣来说宽,如引果不晋赋初达值则堤它的喇值是解一个突不确悠定的愁值。⑷虽然河静态蔑局部凭变量崭在函文数调恶用结睁束后鞠仍然但存在携,但凤其他范函数陆不能碧引用架它。8.圾9变量弃的存别储类狠别--8.击9.交3用st搂at蝇ic声明受局部男变量例8.除18输出1到5的阶争乘值讨。#i傅nc纳lu庸de绵<st腔di题o.晶h>vo脑id千ma决in王(精){in淋tfa堡c(斯in联tn)逝;in织ti;fo讨r君(i峡=1叉;蔽i<翻=5理;垦i+彻+)pr亭in领tf贵(“宣%d!=扩%d\拣n”,喜i僚,fa桌c(愈i))女;}in模tfa删c(端in抗tn){降s葬ta关ti到cin宗tf=很1;f=复f*寇n;re规tu乏rn棒(f);}8.晕9变量维的存药储类缎别--8.伞9.严4聪re务gi敲st坟er变量寄存践器变胃量re语gi拐st抱er:变量泥的值轨是存煮放在钱内存震中的虹。当饼程序楼中用尚到哪困一个棚变量除的值烫时,治由控耳制器呀发出刚指令胆将内也存中冤该变航量的辉值送叹到运纳算器篇中。肯经过盾运算周器进怀行运下算,出如果饼需要匪存数芳,再肯从运泪算器诱将数笛据送利到内海存存娱放。8.央9变量积的存壤储类录别--8.男9.明4聋re蔑gi笼st颠er变量寄存洗器变效量re离gi争st晋er的使武用:如果布有一扫些变贞量使量用频船繁,瞒则为凭存取奸变量罗的值致要花柳费不占少时兄间。为提柳高执规行效桶率,C语言扮允许欺将局数部变芝量的事值放兔在CP超U中的咳寄存且器中转,需晶要用避时直盖接从搁寄存羞器取窜出参剑加运对算,健不必剂再到夕内存续中去世存取装。由于甩对寄回存器持的存朋取速竭度远山高于屯对内阶存的缴存取示速度岭,因计此这湿样做专可以报提高干执行巨效率葛。这种需变量锐叫做坚寄存集器变萌量,刊用关柔键字re担gi哲st错er作声酬明。8.蜻9变量柳的存花储类作别--8.棋9.为5用ex枣te贪rn声明枣外部混变量外部敞变量锈:外部汗变量把是在盖函数狮的外钥部定始义的渔全局叮变量减,它身的作凡用域恳是从舟变量价的定孝义处寺开始液,到牢本程尝序文刘件的陵末尾辱。在此乌作用向域内较,全形局变门量可宰以为兔程序劝中各蝇个函杯数所霉引用浮。编冠译时骄将外愿部变野量分介配在覆静态鄙存储询区。用ex妈te寨rn来声主明外检部变覆量,解以扩紧展外俘部变割量的疏作用帅城。用ex嚼te燃rn声明潮外部赞变量吨:在一慌个文忆件内谦声明负外部凶变量在多期文件当的程屠序中则声明旧外部抵变量8.渣9变量季的存掌储类求别--8.腾9.合5用ex傅te须rn声明偷外部火变量例8.肝20用ex葡te亲rn声明雀外部大变量政,扩赖展它课在程而序文崭件中浙的作旦用域娇。#i士nc班lu汉de县<st池di责o.届h>vo答id食m梁ai竹n(溜){in夕tma针x(柱in承t,众in说t);遮/*外简部变当量声矮明*/ex扎te塘rn谣A称,B殖;pr眼in体tf李("涝%d更\n种",陡ma惰x(酷A,敢B))蛛;}in榴tA=献13属,B储=-驼8;江/*定拔义外木部变加量*/in照tma曲x(氏in刺tx,包in绢ty)填/*定洋义ma冤x函数希*/{in爸tz;z=束x>y?粒x:闯y;re损tu塔rn塘(z);}8.娘9变量动的存停储类兴别--8.头9.厘5用ex食te请rn声明束外部刻变量例8.批21用ex灭te佳rn将外尾部变箩量的雹作用赏域扩辆展到欣其他鉴文件港。本语程序槐的作田用是妇给定b的值摧,输胆入a和m,求a×俊b和am的值膜。文破件fi榆le便1.累c中的养内容回为:#in效cl遣ud乖e印<st溉di螺o.督h>in艰tA;侍/刑*定义旨外部视变量矿*/vo统id描m兵ai序n(不){in叨tpo选we份r(刊in融t);/*函数锄声明嘉*/in瓶tb=挣3,碰c,幕d,商m;pr女in央tf刷(“造en盼te怖rth卡e竖nu逗mb爽er彻a万a筹nd像i料ts让p脾ow丙erm:崭\n”)堵;sc选an阴f(猴“%言d,敬%d”,朗&昏A,宣&竿m)谊;c=油A*宾b;pr答in选tf赚(“雾%d*%d\焰n”斯,A遍,b吸,c);d=po络we橡r(虾m);pr恰in鸡tf杜(“戏%d**界%d惭=%d\趟n”捉,A才,m牧,d);}8.悄9变量暖的存警储类拥别--8.考9.耀5用ex万te节rn声明版外部竿变量例8.苏21用ex康te喘rn将外熟部变愈量的挽作用贱域扩纸展到程其他洁文件蹦。本菠程序溉的作挨用是堤给定b的值皂,输置入a和m,求a×能b和am的值杨。文件fi溉le料1.封c中的斩内容施为:#i展nc浆lu弃de角<st返di旺o.咱h>in呼tA;怀/兆*定义我外部双变量酸*/vo挖id及m扁ai喉n(处)锋{in外tpo司we斤r(辅in环t);/*函数情声明拆*/in赖tb=讯3,炒c,平d,移m;pr求in裳tf程(“衫en打te病rth铜e界nu岸mb描er凉a遭a狼nd擦i狱ts裙p悼ow拖erm:愤\n”)鲜;sc异an心f(购“%智d,淘%d”,露&陵A,延&跟m)俊;c=银A*肯b;pr蹦in震tf驼(“置%d*%d\屿n”饺,A异,b译,c);d=po抽we错r(脸m);pr罩in说tf询(“浴%d**掘%d坡=%d\族n”棚,A财,m锐,d);}文件fi尖le左2.锐c中的撤内容鼠为:ex听te有rn概A;/*声明A为一姑个已获定义排的外峡部变久量*/in分tpo减wr保e(格in位tn)盏{in乖ti,至y=1议;fo掌r株(劲i=唇1;器i挠<=肢n;盗i参++璃)概y钢=y解*A症;理r资et港ur葛n辫(y逃);僚}8.运9变量正的存替储类潜别--8.阔9.败6用st技at灵ic声明贺外部支变量用st逮at阔ic声明项外部浩变量遗:在程鼠序设狗计中,某些桨外部串变量市只限后于被雪本文且件引患用,传而不愈能被属其他轨文件竿引用逃。这时献可以记在定迎义外堵部变护量时点加一凑个st赴ai浆ti功c声明突。例如俗:fi尿le膜1.隶c最fi豆le个2.清cst内at咱icin学tA;茅ex曾te霸rnin骄tA;vo箭id呀m座ai芬n(陈)执v乎oi箩dfu呆n(泡in割tn){袭{缓……巨A偿=A游*n量;}黄}8.妇9变量贤的存思储类哑别--8.壤9.默7关于峰变量胶的声亦明和古定义定义渐性声毕明:需要不建立辣存储厉空间漫的声音明,阵例如约:in占ta;引用苹性声捞明:不需榴建立毁存储刮空间桐的声亲明,阅例如轿:ex夸te拥rn齐a拾;注意腿:声明树包括颈定义刘,但息并非封所有正的声移明都派是定着义。对“in削ta;尼”而言桐,它梯既是阁声明投,又园是定教义。对“ex伤te枕rn群a涝;”而言恼,它滴是声渣明而敬不是槐定义劣。8.叛9变量魂

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论