c語言程序設計函數(shù)調(diào)用_第1頁
c語言程序設計函數(shù)調(diào)用_第2頁
c語言程序設計函數(shù)調(diào)用_第3頁
c語言程序設計函數(shù)調(diào)用_第4頁
c語言程序設計函數(shù)調(diào)用_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第7章函數(shù)與變量7.1函數(shù)概述7.2函數(shù)參數(shù)和返回值7.3函數(shù)的調(diào)用7.4數(shù)組的作為函數(shù)參數(shù)7.5變量的定義位置和作用域7.6動態(tài)存儲方式與靜態(tài)存儲方式7.7函數(shù)的存儲分類7.8程序設計舉例7.9程序設計題目

C語言函數(shù)分為兩種:

標準函數(shù)和用戶自定義的函數(shù)。

標準函數(shù)是系統(tǒng)提供的已設計好的函數(shù),可以直接調(diào)用,用戶自己定義的函數(shù)是用戶自己編寫的用來解決具體問題的函數(shù).(1)C程序的執(zhí)行從main函數(shù)開始,調(diào)用其他函數(shù)后流程回到main函數(shù)。(2)所有函數(shù)都是平行的,即在定義函數(shù)時,是互相獨立的,一個函數(shù)并不從屬于另一函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用,但不能調(diào)用main函數(shù)。(3)從用戶使用的角度看,函數(shù)分兩種:①標準函數(shù),即庫函數(shù)。這是由系統(tǒng)提供的,用戶不用自己定義。②用戶自己定義的函數(shù),以解決用戶的專門問題。7.1函數(shù)概述(4)從函數(shù)的形式看,函數(shù)分兩類:

①無參函數(shù):主調(diào)函數(shù)并不將數(shù)據(jù)傳送給被調(diào)用函數(shù)。

②有參函數(shù):在調(diào)用函數(shù)時,在主調(diào)函數(shù)和被調(diào)用函數(shù)之間有參數(shù)傳遞,也就是說,主調(diào)函數(shù)可以將數(shù)據(jù)傳給被調(diào)用函數(shù)使用,被調(diào)用函數(shù)中的數(shù)據(jù)也可以帶回來供主調(diào)函數(shù)使用。7.1.2函數(shù)的定義

1.無參函數(shù)的定義

類型標識符函數(shù)名(){說明部分或語句}

說明:

用“類型標識符”指定函數(shù)值的類型,即函數(shù)帶回來的值的類型。C語言默認返回值的類型是整型。2.有參函數(shù)的定義

類型標識符函數(shù)名(形式參數(shù)說明){說明部分語句}

類型標識符函數(shù)名(形式參數(shù)表列)形式參數(shù)說明{說明部分語句}例如:intmax(x,y)

intx,y;/*形式參數(shù)說明*/{intz;/*函數(shù)體中的說明部分*/z=x>y?x:y;return(z);/*z為函數(shù)的返回值*/

}這是一個求x和y二者中大者的函數(shù),x和y為形式參數(shù),由主調(diào)函數(shù)的實際參數(shù)把參數(shù)值傳遞給被調(diào)用函數(shù)中的形式參數(shù)x和y。7.2.1函數(shù)參數(shù)在調(diào)用函數(shù)時,大多數(shù)情況下,主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞關系。在定義函數(shù)時,函數(shù)名后面括號中變量名稱為“形式參數(shù)”,簡稱“形參”。在調(diào)用函數(shù)時,函數(shù)名后面括號中的表達式稱為“實際參數(shù)”,簡稱“實參”。(1)在定義函數(shù)中指定的形參變量,在未出現(xiàn)函數(shù)調(diào)用時,它們并不占內(nèi)存中的存儲單元。只有在發(fā)生函數(shù)調(diào)用時函數(shù)max中的形參才被分配內(nèi)存單元。調(diào)用結束后,形參所占用的內(nèi)存單元也同時被釋放。(2)實參可以是常量、變量或表達式,如:max(3,a+b);但要求它們有確定的值。在調(diào)用時將實參的值賦給形參變量。7.2函數(shù)參數(shù)和返回值(3)在定義的函數(shù)中,必須指定形參的類型。(4)實參與形參的類型應一致。只有字符型與整型可以互相通用。(5)實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。7.2.2函數(shù)的返回值函數(shù)的返回值是由return語句傳遞的。

格式:return(表達式);或return表達式;

功能:用return語句從函數(shù)退出,返回到調(diào)用它的程序中.該語句有兩重作用:(1)從函數(shù)中退出,返回到調(diào)用它的程序中。(2)向調(diào)用程序返回一個值。

7.3.1函數(shù)調(diào)用的一般形式格式:函數(shù)名(實參表列);

函數(shù)調(diào)用語句的執(zhí)行過程:首先計算每個實參表達式的值,并把此值存入所對應的形參單元中,然后把執(zhí)行流程轉(zhuǎn)入函數(shù)體中,執(zhí)行函數(shù)體中的語句,函數(shù)體執(zhí)行完之后,將返回到調(diào)用此函數(shù)的程序中的下一條語句,繼續(xù)去執(zhí)行。當執(zhí)行到函數(shù)體的右花括號或return語句時,表示函數(shù)體執(zhí)行完成,這時將返回到主調(diào)程序中。

7.3函數(shù)的調(diào)用7.3.2對被調(diào)用函數(shù)的說明在一個函數(shù)中調(diào)用另一個被調(diào)函數(shù),需要具備的條件:

(1)首先被調(diào)函數(shù)必須是已經(jīng)存在的函數(shù)(庫函數(shù)或用戶自定義函數(shù))。(2)如果使用庫函數(shù),一般還應在本文件開頭用#include命令將調(diào)用有關庫函數(shù)時所需用的信息包含到本文件中來。①輸入輸出庫函數(shù):#include<stdio.h>——使用系統(tǒng)定義的標準輸入輸出函數(shù)。②數(shù)學庫函數(shù):#include″math.h″———使用系統(tǒng)定義的標準數(shù)學運算函數(shù)。(3)如果使用用戶自己定義的函數(shù),而且該函數(shù)與調(diào)用它的函數(shù)(即主調(diào)函數(shù))在同一個文件中,一般還應該在主調(diào)函數(shù)中對被調(diào)用函數(shù)的返回值的類型作說明。這種類型說明的一般形式為:類型標識符被調(diào)函數(shù)函數(shù)名();

對被調(diào)用函數(shù)的說明,在以下幾種情況下可以省略:

(1)如果函數(shù)的值(函數(shù)的返回值)是整型或字符型,可以不進行說明,系統(tǒng)對它們自動按整型說明。(2)如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)之前,可以不進行說明,因為編譯系統(tǒng)已經(jīng)先知道了已定義的函數(shù)類型,會自動處理。(3)如果在所有函數(shù)定義之前,對函數(shù)類型進行了說明,則在各個主調(diào)函數(shù)中不再進行說明。

7.3.4函數(shù)的嵌套調(diào)用C語言的函數(shù)定義都是互相平行、獨立的,可以嵌套調(diào)用函數(shù)即在調(diào)用一個函數(shù)的過程中,又調(diào)用另一個函數(shù).

7.3.5函數(shù)的遞歸調(diào)用在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。C語言的特點之一就在于允許函數(shù)遞歸調(diào)用。例如:intf(x)intx;{inty,z;…z=f(y);…return(2*z);

}7.4.1數(shù)組元素做函數(shù)實參由于實參可以是表達式,數(shù)組元素又可以是表達式的組成部分,因此數(shù)組元素可以作為函數(shù)的實參,與變量作實參一樣,是單向傳遞,即“值傳送”。只能將數(shù)組元素的值傳遞給被調(diào)函數(shù)的形參,不能帶回變化的值。這種方式適合部分數(shù)組元素傳遞和元素較小的數(shù)組傳遞。

7.4數(shù)組的作為函數(shù)參數(shù)運行結果:形參值為:234實參值為:1237.4.2用數(shù)組名做函數(shù)的實參與形參例7.1有一個一維數(shù)組s,存放10個學生成績,求平均成績.

floataverage(a)/*數(shù)組名a作形參*/floata[10];{inti;floatv,sum=a[0];for(i=1;i<10;i++)sum=sum+a[i];v=sum/10;return(v);

}main(){floats[10],v;inti;printf(″input10s:\n″);for(i=0;i<10;i++)scanf(″%f″,&s[i]);printf(″\n″);v=average(s);/*數(shù)組名s作實參*/printf(″averageis%5.2f″,v);}運行結果:input10s:

100567898.576879967.57597≠averageis83.40

說明:

(1)用數(shù)組名做函數(shù)參數(shù),應該在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組。(2)實參數(shù)組與形參數(shù)組類型應一致。(3)實參數(shù)組和形參數(shù)組大小可以一致也可以不一致,C編譯時對形參數(shù)組大小不作檢查,只是將實參數(shù)組的首地址傳給形參數(shù)組。若要求形參數(shù)組得到實參數(shù)組全部的元素值,則應當指定形參數(shù)組與實參數(shù)組大小一致。也可以不指定形參數(shù)組大小,在定義數(shù)組名后面跟一個空的方括弧,為了在被調(diào)函數(shù)中處理數(shù)組元素的需要,可以另設參數(shù),說明傳遞數(shù)組元素的個數(shù)。例7.2floataverage(a,n)/*a為形參數(shù)組名,n用于說明數(shù)組元素個數(shù)*/floata[];intn;{

inti;floatv,sum=a[0];for(i=1;i<n;i++)sum=sum+a[i];v=sum.n;return(v);}main(){

floatscore1[5]={98.5,97,91.5,60,55};floatscore2[8]={67,88.5,79,45,90,81,77.5,99};pr灣in躍tf(″t妙he苦a曲ve鋸ra倦ge泳o杯f穿cl撒as論s1修is護%6黨.2捎f\剪n″,av百er穩(wěn)ag濱e(sc太or夏e1,5));/*調(diào)用元時5為形湯參數(shù)筋組a的元軌素個名數(shù)紋*/pr補in藍tf(″t鞭he板a收ve探ra哲ge孟o塔f刪cl果as掩s2拐is遺%6洽.2殺f\狀n″,av乞er上ag議e(sc遠or卸e2,8));}運行帆結果:蠶th挽e找av略er妨ag賤e爪of主c薯la丙ss級1i頸s驢8薯0.諒40th碧e虧av病er咐ag愛e珍of誕c師la妨ss雖2i功s水7歇8.堆37這么哥處理臣數(shù)組姓的大剖小就用可以疊不同渾。(4)數(shù)擺組名互做函黃數(shù)參磁數(shù)時,把實國參數(shù)暗組的芽起始墾地址熊傳遞肅給形牙參數(shù)印組,這樣扒兩個慨數(shù)組索就共截占同艙一段究內(nèi)存臂單元阻。如云圖7.就1所示.假如a數(shù)組山的起抵始地柴址為10剩00,則s數(shù)組速的起役始地引址也炊為10漿00,顯稿然,a和s同占讓一段浴內(nèi)存扁單元貝。a[0]與s[0]同它占一登個單害元…。這種屑傳遞述方式醉叫“淡地址址傳遞毅”。廣由此品可以國看到瘋,形宗參數(shù)偵組中替各元蘇素的臣值發(fā)煮生變和化,坑會使屑實參貍數(shù)組素元素舉的值裁同時幻玉發(fā)生鈴變化決。這布一點邪與變毯量函嬌數(shù)參綢數(shù)的狹情況維不同溪。a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]2賢4俗6提8垮10陳12疑14如16坐18琴2太0s[0]s[1]s[2]s[3]s[4]s[5]s[6]s[7]s[8]s[9]C語言大中變秧量的悼定義剛有三鞠個基黃本位僵置:函數(shù)旁內(nèi)部府、函墳數(shù)參損數(shù)中趴及所冰有函中數(shù)外桂部。茶這些蜂變量朝分別強稱為異局部趕變量摸、形具式參桂數(shù)變璃量、任全局靈變量抓。定選義位筋置不舒同,溝變量貓的作鋒用域腰不同懼,即孔變量另所起腐作用脈的范估圍不盆同。配有關是形式魚參數(shù)敵已經(jīng)插介紹稍過。圖7.凍1用數(shù)熟組名緣瑞做參枯數(shù)時敲,形帝參與拍實參兆的存迎儲關村系7.曾5變量械的定似義位霉置和酸作用俊域7.模5.眠1局部筍變量局部我變量吐又稱翁做內(nèi)貴部變把量,冒是在飾函數(shù)狠內(nèi)部膠定義使的變該量。蜜形參速也是當局部權變量炸。其壁作用托域是辱從定建義的膛位置蜂起,虹到函耐數(shù)體坊結束膜止。棕也就伯是說剝,只育能在智定義技該變患量的鼻函數(shù)兵內(nèi)使援用它薯,在豆此函奧數(shù)以遙外不議能使支用。對于迷局部紅變量贈,它州只在效進入炒本函穗數(shù)時受生成淚,在喝退出譯該函笨數(shù)時認消失勞。因族此在C語言冷中不聲同的查函數(shù)診內(nèi)可縱以定捷義相惱同名文字的貝變量傍,它伙們代獎表的醋對象碧不同若,互匆不影秩響。例如:f1(){in呼ta,b;a=換5;億b=館10宅;…}局部榮變量a,b的作混用域f2(){in賢ta,b;a=辣10確0;鑄b=支-2稅00行;…}f1()尊和f2()巴中的湯變量a、b均為盟局部拾變量膀,并宴且互假不相盜關。趙其原代因是商每個a、b作為予局部箱變量悉僅在胳被定尊義的寨函數(shù)臭內(nèi)是擊可知艙的。毛在復嬸合語引句中遵也可鹿以定則義本鞏段程執(zhí)序的妥局部向變量崗。例辱如:局部昨變量a,b的作任用域f(x)in廣tx;{in缸ta;…if(x>芹0){in烏tb=嬌40家;…}…}b的作逼用域砌僅在頃其定眼義的泳分程燦序之午內(nèi),窄即進園入分變程序定時建京立b變量庸,結雪束分嘩程序盛時立咐即撤抓消。b的作瞧用域x、a的作硬用域7.軟5.顫2全局煎變量全局心變量吹又稱董做外謠部變懇量,揪是在居函數(shù)脅外部抖定義妄的變世量。竹其有閃效范嫩圍是妄從變?nèi)慷盍x的戶位置事開始揮到本棋源文繼件結良束止緒。若在女同一扇個源做文件英中,錘局部倉變量亮與全朋局變下量同端名,邊則在覆局部史變量職的作棗用范移圍內(nèi)萌,全雨局變予量被暮屏蔽豎,不敲起作悉用。在函叫數(shù)體演外進交行的腐函數(shù)爆說明比也使視該函影數(shù)具榆有全閑局的聞性質(zhì)視。in念ta=葬1,b=毫5;fl汽oa依t騎f1(x)in廁tx;{in爸tc,d;國…}ch想ar乘c棵1,c2豪;ch視ar摘f般2(x,y)in柜tx,y;{in路ti,j;泥…}ma劈燕in(){in混tm,n;淡…}全局討變量c1、c2作用廟域全局奪變量a、b作用話域a、b、c1、c2都是崇全局婚變量陽,但押它們狼的作爐用范番圍不武同。冊在ma憲in函數(shù)樂和函辛數(shù)f2中可問以使叫用全歇局變給量a、b、c1、c2,但外在函爆數(shù)f1中,模只能為使用漲全局亂變量a、b,而趣不能川使用c1和c2。說明:(1)全類局變支量的塑作用:增加先函數(shù)炊間數(shù)府據(jù)聯(lián)堂系的期渠道端。由劫于同訂一文癥件中乒的所嶄有函走數(shù)都傅能引茄用全五局變居量的載值,洽因此仆,如狼果在歷一個婚函數(shù)使中改說變了寨全局宮變量眉的值艷,就堆能影歉響到建其他個函數(shù)宰,相定當于鉗各個撒函數(shù)藥間有姨直接霉的傳翅遞通蛙道。遍由于產(chǎn)函數(shù)味的調(diào)宿用只待能帶字回一躍個返扣回值奶,因施此有芝時可沾以利泥用全對局變飼量增屯加與隙函數(shù)緒聯(lián)系豆的渠肺道,從函盲數(shù)得清到一貼個以艷上的幕返回炒值。對于冰全局槽變量潤,如培果在眨定義跟時不植進行間初始培化,略則系簡統(tǒng)將抓自動崇賦予笑其初紋值,溉對數(shù)抽值型捷賦0,對著于字沙符型時賦空′\少0′。(2)使噴用全裳局變支量會障增加談程序鳥的內(nèi)放存開筑銷,談因為磨全局錘變量腰在程停序的躬整個業(yè)執(zhí)行掠過程箏中都損有效石,即謠一直瞧占用如著內(nèi)往存單譜元,疲而不泊是像泄局部偉變量姿那樣相,在貫進入假其所涉在函蘆數(shù)時拒才開瘡辟存岔儲單貪元,尺退出燒函數(shù)辰時便戚將其向釋放緊。使?jié)庥萌毒肿儗倭?,俘還會練降低歌函數(shù)謝通用合性,而且雪會降逼低程瘡序的萄清晰暈度。療建議巷不要咬無限趕制地喊使用桐全局杠變量坦。(3)在狂定義叢全局鼻變量老時,屑最理夸想的思定義毛位置益是在山源文秒件的額開頭扇處,逐這樣券,在宰整個抬文件尸中的請所有淡函數(shù)偵均可偶使用榴該變翁量。靈如果貞將一肌全局康變量槽定義蘭在源奔程序限文件逆的中艷間,就則其訓前面接的函于數(shù)不最能使插用該埋變量旨。如想果在京定義蚊點之如前的鋒函數(shù)寺想引撞用該奴外部曬變量非,則扛應該竊在該蔽函數(shù)眉中用冰關鍵遲字ex柳te榮rn作“發(fā)外部恒變量賞說明選”。碼表示徐該變檢量在百函數(shù)常的外村部定槐義,叮在函債數(shù)內(nèi)遮部可真以使療用它召們。榮見例7.臘10竊.例7.爪3求兩漂個數(shù)較的最林大值孤。in蔬tma巡壽x(x,y)in忠tx,y;{in伙tz;z=鉆x>y?款x:攻y;re償tu術rn(z);}ma金in(){ex屢te歪rnin摩ta,b;算/*外部膜變量城說明辭*/pr翁in抹tf(″m狗ax夠=%d\限n″,ma婦x(a,b));}in聯(lián)ta=嫂10,b=演12月0;償/嫩*外部槽變量此定義畜*/運行智結果:ma完x=賽12競0由于召外部趟變量延定義兔在ma筍in函數(shù)鉤之后屆,因笑此在ma諷in函數(shù)群引用義外部堂變量a和b之前駱,應絹該用ex天te送rn進行州外部珠變量同說明壇,說蕩明a、b是外桐部變衣量。尺如果甜不作ex帽te癥rn說明坡,編宏譯時側(cè)出錯灘,系便統(tǒng)不冬會認霜為a、b是已攝定義款的外事部變輩量。淚一般倘的做制法是牲外部耽變量平的定攝義放欄在引進用它協(xié)的所明有函戶數(shù)之挽前,續(xù)這樣田可以切避免址在函達數(shù)中冰多加思一個ex班te喊rn說明究。外部鄉(xiāng)豐變量窮的定態(tài)義與美外部夸變量玻的說替明并危不是泊一回密事。償外部終變量使的定稠義只詠能有廚一次熄,它扮的位蠟置在吸所有濾函數(shù)壓之外撲,而恐同一僅文件競中的隱外部忍變量掛的說黑明可服以有壇多次板,它倘的位讀置在卵函數(shù)故之內(nèi)訪。(4)如稼果在狂同一愿個源院文件示中,仆外部飯變量亦與局嘆部變侮量同紫名,捎則在疏局部物變量鼠的作冶用范甲圍內(nèi)綿,外換部變跨量不責起作坡用。例7.呈4求兩婚個數(shù)擱的最冬大值哭。in數(shù)ta=差3,b=嘩5;務/*降a、b為外而部變層量*/崖a、b的作車用范奪圍ma葉x(a,b)in便ta,b;沃/脾*a、b為局監(jiān)部變鞭量*/{in聽tc;c=曲a>b?更a:兄b;re雷tu氧rn(c);}ma積in(){in巾ta=西10要;薦/*仍a為局筆部變田量*/pr牌in美tf肢(″靜ma煤x=%d\旅n″工,m盛ax(a,稻b))簡;}運行嗚結果:ma冤x=船10形參a、b作用譯范圍局部領變量a作用陜范圍全局賴變量b作用乏范圍第一的行定崖義了壩外部刷變量a、b,并升使之絕初始煙化。潤第二區(qū)行開云始定流義函租數(shù)ma青x,a、b是形豈參,紛形參你也是禽局部嗽變量鞠。函普數(shù)ma聞x中的a、b不是叢外部惰變量a、b,它芳們的岔值是擴由實歷參傳詠給形汁參的磚,外益部變男量a、b在ma殲x函數(shù)槳范圍刷內(nèi)不釀起作畢用。槽最后4行是ma虛in函數(shù)及,定瘋義了言一個準局部荷變量a,因鬧此全秩局變銜量a在ma乓in函數(shù)辮范圍藥內(nèi)不這起作原用,迫而全懲局變壟量b在此豬范圍圓內(nèi)有洽效。園因此pr拋in回tf函數(shù)量中的ma學x(a,b)相銳當于ma上x(10,5),稼程序診運行地后得說到結地果為10。7.域6.棕1變量縣的存宜儲類請別從變窯量的差作用然域(辦即從縱空間己)角級度來畝分,博可以哄分為駁全局往變量鉛和局鑼部變妨量。從變事量值長存在畢時間解(即卻生存?zhèn)绕冢嵌燃瞾矸贮S,可然以分弄為靜變態(tài)存菌儲方污式和材動態(tài)妥存儲酷方式蘭。7.食6動態(tài)攻存儲險方式訴與靜燦態(tài)存臭儲方排式1.靜態(tài)感存儲燥方式是指麗在程題序運伍行期員間分駁配固華定的傲存儲棵空間斗的方制式。2.動態(tài)洞存儲紅方式是指奏在程伯序運黎行期畝間根煤據(jù)需醒要進呈行動駱態(tài)的黃分配紐奉存儲葵空間突的方矩式。供用遺戶使塊用的倉存儲滋空間毀可分脅為三瓶部分:(1)程毫序區(qū);(2)靜煤態(tài)存巧儲區(qū);(3)動磚態(tài)存文儲區(qū)左。數(shù)據(jù)琴分別透存放災在靜償態(tài)存裙儲區(qū)攻和動謙態(tài)存嚼儲區(qū)響中。坐全局鹽變量附存放軟在靜波態(tài)存歌儲區(qū)瘡中。矮在程董序開梯始執(zhí)如行時守給全沃局變菜量分億配存風儲區(qū),程序撓執(zhí)行粗完畢判就釋歡放。語在程糞序執(zhí)藍行過娃程中音它們魯占據(jù)坐固定塵的存話儲單首元,桂而不頁是動梯態(tài)地姑分配衫和釋騙放。局部駐變量朝存放倆在動感態(tài)存集儲區(qū)贏中,訪在函插數(shù)調(diào)魂用開播始時劍分配揚動態(tài)尤存儲拉空間司,函潤數(shù)結靈束時世釋放私這些晶空間啄。在羅程序縱執(zhí)行眼過程漲中,貿(mào)這種披分配盯和釋寬放是定動態(tài)季的。在動陣態(tài)存筑儲區(qū)只中存伶放以喚下數(shù)拴據(jù):①函數(shù)屯形參話變量。在調(diào)缺用函它數(shù)時,給形造參變稻量分久配存小儲空綱間.②局哀部變辛量。其未加st袖at唇ic說明冒的局再部變服量,嚷即自虛動變績量。③函宗數(shù)調(diào)峽用時免的現(xiàn)拳場保駝護和糊返回沈地址魯?shù)?。對以草上這宜些數(shù)黑據(jù),編在函諷數(shù)調(diào)燒用開塘始時亡分配暈動態(tài)孔存儲羞空間母,函虜數(shù)結肝束時紫,釋芳放這擱些空血間。促程序泥運行鉗過程止中,稅這種匯分配列和釋磚放是糕動態(tài)看的,聾如果棗在一忌個程禾序中婦兩次作調(diào)用懶同一除函數(shù)咬,分器配給袍此函銳數(shù)中經(jīng)局部匯變量真的存阿儲空粒間地揉址可磨能是何不同語的。尊如果謠一個聰程序煤包含宴了若葡干個視函數(shù)喚,每虛個函梨數(shù)中獵的局誰部變乖量的玩生存?zhèn)蚱诓⒋坏热嵊谡駛€程斥序的泛執(zhí)行呈周期渠,它踐只是順程序基執(zhí)行贊周期律的一茶部分狹。根帖據(jù)函岸數(shù)調(diào)咳用的銜需要縮慧,動碗態(tài)分倆配和賢釋放字存儲恢空間咽。在C語言葉中每部一個續(xù)變量斜和函床數(shù)有尺兩個毛屬性:數(shù)據(jù)駁類型踐和數(shù)脾據(jù)的苦存儲萄類別歲。存大儲方侄法分修為兩丙大類:靜態(tài)勺存儲捐類和革動態(tài)儉存儲寶類。具體改包括4種:自動耳(au撈to);靜態(tài)盜(st耕at橋ic蹤蝶);寄存差器(re蒸gis留te場r);外部潑(ex態(tài)te殲rn)。7.泰6.糕2局部年變量市的存且儲方菌式1.自動捷存儲雜類別函數(shù)涉中的你局部鴉變量將,如膠不為st右at次ic存儲胖類別突都是京動態(tài)冷分配器存儲你空間歉的,篩存儲禿在動做態(tài)存琴儲區(qū)香中,朱分配子和釋延放存拿儲空朽間的市工作四由編俱譯系廟統(tǒng)自偷動處擴理,批因此蓬這類妻局部謠變量善稱為限自動釀變量區(qū)。自噴動變騰量用讓關鍵山字au倘to作存程儲類置型說杰明。沾例如:當局杏部變鄙量未遷指明趟存儲蠢類別方時,榜被定刃義為au相to存儲港類別保。in沾tf(a)/*定義民函數(shù)級*/in暗ta;吼/*定義a為形捆參*/{au答toin剃tb,c=楚9;枯/*定義b、c為自爺動變許量*/…}b、c是自行動變張量,c=刃9,執(zhí)悔行完f函數(shù)飽后自浮動釋扒放其外所占爬的存使儲單盆元。au蘿to也可次以省傅略不槽寫,且則隱咱含確青定為其“自燙動存希儲類蕉別”炊,它刷屬于訓動態(tài)筑存儲蒜類別挪。au剪toin港tb,c=跪9;與in丟tb,c=而9;是等則價的專。2.靜態(tài)莫存儲回類別存儲團分類違符st壯at薯ic既可零用于窯說明剃全局拴變量徒,也總可用然于說眾明局神部變膀量。段當其使作用纖于局軋部變?nèi)毫繒r呀,該座變量勢稱為造局部照靜態(tài)呢變量;其作揮用于摔全局泥變量槍時,洽該變弊量稱洋為外燭部靜王態(tài)變麗量。(1)局搏部靜則態(tài)變夾量在函貴數(shù)體坊內(nèi)用st屑at煩ic說明笨的變饅量稱鼠為靜得態(tài)局灣部變需量。愿在程啞序運租行期氣間,臘它占亮據(jù)一混個永謹久性梨的存辨儲單嶺元,漆在退碑出函殲數(shù)后沈,值煉仍舊饞保留恥。靜煎態(tài)變黑量是親在編聚譯時持賦初滴值,母因此粥在程夕序執(zhí)巡壽行期旦間,陣一旦咳存儲宿單元貧中的靜值改千變,名就不晶會再辮執(zhí)行梁賦初得值語算句。清未賦心初值遼的變梅量,C編譯品程序遞將其先置為0。形某參不蘇允許默說明鉗為靜揭態(tài)存孔儲類踩別。例7.渾6ma錄in(){f1();f1();f1();}運行殿結果:x=亮1f1(){in拖tx=柱0;x=戲x+強1;pr先in送tf(″x議=%d\反n″,x);}x=切1x=信1若把in訊tx=眾0;改為:s傍ta武ti偽cin牽tx=竟0;運行螺結果誘如下:x=絞1x=澤2x=琴3從程共序可搭以看額出,婆自動蠟變量為在函扔數(shù)每梳次被怒調(diào)用宿時,同都進成行初俱始化妙。而腔靜態(tài)夫變量先只在幼編譯翼階段禍初始筋化一溫次。洲在上鞋例中員,前腎一種膀情況x是自灰動變廉量,f1()霉函數(shù)怨每次訪被調(diào)翅用時逐,x都初昆始化,耕因此籮,輸燈出結正果始螺終是1。后投一種慈情況x是局污部靜撤態(tài)變扮量,f1()汽函數(shù)疑第一略次被漲調(diào)用崗時,x為0,退儀出時奸為1。第腰二次甜調(diào)用蟻時,x的值暖是1,仍犬然存載在,碧因此騙,輸灑出時x值為2,同殲樣,蟲第三次調(diào)塞用時還,x的值內(nèi)為3。(2)外磚部靜叨態(tài)變揚量當定輔義一虧全局治變量束時,羊若將盲其指延定為st街at選ic類,顫則說直明該氧全局英變量術只在育本源挽程序愛文件梨中使參用,令其他弟的源陸程序峽文件校不能夜引用帥該全銷局變醒量。報這種同外部消靜態(tài)努變量蝕主要質(zhì)用于艘同一疲程序?qū)挿謩e塘由多根人編別寫完筍成時摸的情黨況,賄避免形不同鑄編程毛者定揀義出蜓相同究名字聽的全吩局變懲量。對于老全局旁變量舍,不票管是等否加st撓at啦ic說明慈,均親屬于稱靜態(tài)陰存儲蜂變量影。使狀用st股at晃ic只是境為了朗限制傲其引道用范宣圍。3.寄存鼓器存憂儲類壘別為了吵提高冤程序往的執(zhí)贊行效綱率,C語言花允許拆將局談部變旬量的掘值放東在CP望U的通巖用寄訪存器穩(wěn)中,程這種修變量欺稱為畏寄存棄器變雪量。溪寄存繩器變鍛量用蠢關鍵麥字re行gi鵝st段er說明睡。例波如,父函數(shù)哲體中茶的變紡量說刊明:re功gi牙st倚erin批ta,b;定義藥了兩巷個寄沙存器秒變量a、b,函贊數(shù)運螺行時毫將盡斯可能表把a、b的值妹放在逐寄存笑器中姐。在計阻算機驚中,宗從內(nèi)腔存“示存取費”數(shù)昨據(jù)要犯比直篇接從嘴寄存奶器中揚“存誼取”悲數(shù)據(jù)太慢,強所以鉛對一踢些使脖用特煉別頻險繁的工變量陪,可作通過re羨gi橡st際er將其雁定義巖成寄尊存器潔變量您,使雞程序靈直接充從寄殊存器教中肥“存殼取”湯數(shù)據(jù)斥,以結提高辰程序遣的效潔率。由于獵計算對機的藏寄存柴器數(shù)參目有蓮限,搏并且歉不同蟲的計繡算機貴系統(tǒng)窯允許和使用廁寄存橫器的諸個數(shù)福不同話,所掘以不區(qū)宜定揉義太刪多的它寄存層器變坊量,曲只有掩將少筍量變宮化頻憶繁的雙變量貝定義歲成寄鄉(xiāng)豐存器查變量浴,如漲循環(huán)最控制林變量招等。幅當一娛函數(shù)黑內(nèi)定炎義的拔寄存橋器變假量的填個數(shù)僵超過貧系統(tǒng)系所允換許使翅用的組寄存祥器數(shù)柱時,久系統(tǒng)培將自依動將灶其作煎為一殲般局府部變們量處借理,趙即仍峰使用叔內(nèi)存籌單元診存放乞其值民,并叫不提幟高執(zhí)報行速主度。說明:(1)只擋有局此部自恢動變鍬量和熟形式升參數(shù)堤可說譜明為課寄存監(jiān)器變質(zhì)量。(2)一偵個計頭算機性系統(tǒng)豎中的屈寄存君器的收數(shù)目資是有剪限的耳。(3)不載同系超統(tǒng)對re師gi蛾st誼er的處爽理不冠同。(4)局姑部靜刪態(tài)變員量不圓能定才義為催寄存蒸器變續(xù)量,悄不能敏寫成:re買gi扮st逝er肚s洪ta槳ti航c湯a,b,c;7.寶6.況3全局吸變量膽的存階儲方違式全局散變量籠可以能使用ex她te厘rn和st零at燙ic存儲佳類別雄。當音未對屢全局變量盟指定岸存儲擴類別泊時,芝隱含橋為ex圖te疼rn類別矛。1.外部畫存儲桑類別當在犁一個點文件好中要躲引用喂另一彎個文挑件中館的全祝局變您量或膽在全抖局變剩量之老前要駐引用懼它時犬,可詢用ex鞋te紫rn說明奴。相掘當于耕擴大蝦全局警變量競的作車用域雁。例7.君7f1央.c程序淘文件ma役in(){in謹tpo腰we撥r();ex奇te束rnin依ta;in略tb=默3,c,d,m;pr頑in元tf(″a,m=藥?\票n″);sc許an闊f(″%需d,%d界″,&a,&m);c=刪a*愈b;pr恨in牧tf(″%dˇ銳%d=%d\毀n″,a,b,c);d=肥po箭we色r(m);pr太in滋tf(″%dˇ雙%d=%d\毀n″,a,m,d);}in智ta;f2登.c程序聽文件ex藥te鑼rnin邁ta;po柴we吩r(n)in喘tn;{in鋪ti,y=環(huán)1;fo愛r(i=字1;王i<白=n;掠i++)y*陳=a婆;re昌tu挖rn(y);}程序央文件f1中的腰最后融一行姿為對遙全局屯變量a的定柱義,ma補in函數(shù)拜在其精作用掙域之爭外,故所以懼在ma旦in函數(shù)酷中對齒其進耀行了辱外部尾說明雕,而體在文長件f2中的巾第一護行也歐是對a進行仁說明蠟。由于侍全局綁變量棚在整疲個程款序的薄運行午過程菠中只“永味久性涌”地條占用翅固定剝的存彩儲單限元,所以影它存振放在賓靜態(tài)洽數(shù)據(jù)盲區(qū)中,屬于沈靜態(tài)璃存儲喪變量.2.靜態(tài)布存儲歉類別由st凍at紗ic說明疏的全當局變魂量稱滴為靜借態(tài)全維局變抬量,肺它只燭能由塵本文夢件引議用,嘆即使勝在其甘他文參件中壁用ex瓦te門rn說明垃也不殲能使譽用,侵相當誰于限膽制了柔全局努變量建作用候域的代擴展黃。7.境6.劃4存儲祥類別抬小結對一奔個數(shù)彈據(jù)的賄定義醬,需垃要指治定兩狐種屬準性:數(shù)據(jù)撐類型貴和存廢儲類去別,選分別貧用兩舒?zhèn)€關居鍵字晴進行沸定義恢,如:st步at稻icin留ta;(靜晉態(tài)內(nèi)對部變宵量或撓靜態(tài)敲外部轉(zhuǎn)變量綢)au這to撲c脖ha嘉r忠c;(自奸動變制量,企在函斃數(shù)內(nèi)判定義茶)re四gi站st藍erin拍td;(寄旦存器慈變量婦,在贊函數(shù)欠內(nèi)定熔義)ex唉te悠rnin片tb;(定愉義外怠部變森量)從不膝同角纏度做托以下曬歸納瓦。(1)從框作用班范圍本角度忍分:有局期部變振量和道全局葬變量屯。它子們采唱取的飛存儲將類別低如下:自動洽變量火,即柴動態(tài)達局部蕉變量技(離性開函句數(shù),電值就喬消失億)靜態(tài)挖局部簡變量讓(離捷開函慣數(shù),夢值仍蒜然保章留)寄存訪器變龍量(墊離開較函數(shù)箱,值隙就消植失)(形紛式參撿數(shù)可涂以定利義為界自動噴變量涂或寄暴存器山變量肆)局部憶變量靜態(tài)沾外部打變量柱(只砌限本壇文件當引用的)外部醬變量(即非候靜態(tài)靈的外畫部變板量,允許饑其他炕文件亡引用)(2)從眾變量堆存在持的時植間來痕區(qū)分偉,有聽動態(tài)寄存儲休和靜望態(tài)存棒儲兩魂種類飲型。自動俗變量養(yǎng)(本齊函數(shù)絲式內(nèi)有急效)寄存妖器變甘量(它本函莖數(shù)內(nèi)凡有效鴉)形式慰參數(shù)介(本臥函數(shù)梨內(nèi)有躺效)靜態(tài)碼局部勉變量正(函訴數(shù)內(nèi)愧有效炮)靜態(tài)韻外部駐變量起(本隔文件宴內(nèi)有福效)外部藥變量猶(其路他文而件可捐引用睬)(3)從紹變量罷值存挪放的赴位置份來區(qū)菊分:靜態(tài)皮局部冊變量靜態(tài)絕外部冶變量懸(函銳數(shù)外幕部靜費態(tài)變資量)外部精變量迎(可涼為其拍他文含件引窗用)全局轉(zhuǎn)變量動態(tài)戲存儲靜態(tài)唱存儲內(nèi)存斬中靜辱態(tài)存攝儲區(qū)內(nèi)存息中動搭態(tài)存宰儲區(qū):自動敵變量幼和形凳式參年數(shù)CP視U中的喊寄存餓器:寄存江器變怎量7.輝6.鉤5內(nèi)部廟函數(shù)冬和外超部函各數(shù)1.內(nèi)部悼函數(shù)內(nèi)部消函數(shù)抓又稱癥靜態(tài)帶函數(shù)乳。定蘭義時認被說灶明成st街at博ic類別逃,靜刻態(tài)函頌數(shù)只允局限喬于所們在文倒件,王其他名文件右不能材調(diào)用臟。2.外部松函數(shù)定義理時被駁說明糧成ex托te蔑rn類別香的函河數(shù)為咱外部卵函數(shù)船。函蝕數(shù)的淚隱含肆類別鳳為ex恰te平rn類別愚,外裙部函滋數(shù)可島以被蠻其他息文件喝調(diào)用夫。7.譜7.婦1內(nèi)部音函數(shù)7.蹲7函數(shù)竟的存尖儲分稱類當定爪義一頃個函座數(shù)時植,若米在函咱數(shù)返幅回值脾的類挽型前濫加上st合at莫ic時,中則稱藍此函幫數(shù)為撞“靜衣態(tài)”玩函數(shù)膏。格式st宇at雜ic類型赴標識高符函驕數(shù)名沈(形繡參表宏)靜態(tài)夕函數(shù)僻的特宅征只詞限于社本文蜂件中捕的其水他函數(shù)數(shù)調(diào)帥用,昨所以渠又稱森作“筑內(nèi)部金”函雨數(shù)。噴使用藏內(nèi)部翠函數(shù)覽,可笨以避壞免不兩同文牛件因走函數(shù)術同名蝦而引號起混殊亂。疏通常添把只箱能由低同一菠文件練使用展的內(nèi)供部函臂數(shù)和受外部潑變量盯放在那一個毅文件亂中,抽在它壯們前枝面加蜂上st曠at段ic使之勇局部婆化,經(jīng)其他從文件拜不能幅引用守。例7.結8fi窄le劑1.丈c(文尊件1)ma旗in(){in膚ta,b;ex斃te晨rn避v慣oi殃d鴨sw附ap()sc娘an室f(″%d%打d″,&a,&b);if(a<緩b)sw去ap(a,b);pr掠in工tf(″%向d,%d\廳n″,a,b);}fi陡le百2.撿c(文習件2)st眨at船ic齒v鞭oi桿d拒sw師ap(x,y)in怎tx,y;{in密tt;t=x;團x=y;俘y=t范;}fi暴le肝2.泳c中的虜函數(shù)sw勾ap是內(nèi)此部函穴數(shù),妨只能念被fi慌le駱2.途c中的畫其他毅函數(shù)昂調(diào)用賠。在fi喚le第1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論