資源描述:
《北大青鳥 C語言實現(xiàn) 9.ppt》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、函數(shù)第九章回顧指針變量指針運算符指針與數(shù)組內(nèi)存分配2目標掌握函數(shù)的結(jié)構(gòu)掌握函數(shù)聲明和原型按值傳遞/按地址傳遞理解函數(shù)的作用域掌握函數(shù)指針3函數(shù)獨立的程序段執(zhí)行一個具體的、明確定義的任務易于編寫、理解、調(diào)試和維護將需要多次執(zhí)行的一組指令定義為函數(shù)4函數(shù)的結(jié)構(gòu)type_specifierfunction_name(arguments){函數(shù)體}返回值的數(shù)據(jù)類型有效的函數(shù)名形式參數(shù)5函數(shù)的參數(shù)#includeintsquarer(intx);main(){inti;for(i=1;i<=10;i++)printf("Squareof%dis%d",i,squarer
2、(i));}intsquarer(intx)/*intx;*/{intj;j=x*x;return(j);}形式參數(shù)實際參數(shù)6從函數(shù)返回intsquarer(intx)/*intx;*/{intj;j=x*x;return(j);}將控制權從函數(shù)傳回主調(diào)程序把return語句中的內(nèi)容返回給主調(diào)程序7函數(shù)的數(shù)據(jù)類型如果返回的是一個整型值或者沒有返回值,可以省略類型標識符為了避免出現(xiàn)不一致,最好指定數(shù)據(jù)類型intsquarer(intx)/*intx;*/{intj;j=x*x;return(j);}8調(diào)用函數(shù)函數(shù)名后面必須有括號一個函數(shù)只能返回一個值程序可以有一個以上的函數(shù)主調(diào)函數(shù)被
3、調(diào)函數(shù)9函數(shù)聲明在定義之前使用函數(shù),必須聲明否則,一些編譯器會返回錯誤#includemain(){address();}address(){}“隱式”聲明10函數(shù)原型指定參數(shù)的數(shù)據(jù)類型如果調(diào)用時所使用的參數(shù)與原型的參數(shù)之間不一致,系統(tǒng)將報錯charabc(intx,inty);abc(12);11變量局部變量在函數(shù)內(nèi)部聲明進入一個程序塊時創(chuàng)建,退出該程序塊時銷毀形式參數(shù)在函數(shù)定義中被聲明為參數(shù)在函數(shù)內(nèi)部像局部變量一樣使用全局變量在所有函數(shù)以外聲明在程序的整個執(zhí)行期間都擁有值12存儲類別2-1存儲類別是變量的屬性存儲類別定義了:生命周期保留特定值的時間長度可見性程
4、序的哪些部分將能夠“看見”該變量13存儲類別2-2自動的(auto)外部的(extern)靜態(tài)的(static)寄存器的(register)14函數(shù)作用域規(guī)則一塊代碼是否有權訪問另一塊代碼或數(shù)據(jù)函數(shù)內(nèi)部的代碼對該函數(shù)來說是私有或局部的兩個函數(shù)擁有不同的作用域但處于相同的級別函數(shù)不能在其他函數(shù)以內(nèi)定義15調(diào)用函數(shù)按值傳遞按地址傳遞25100#25100#2510016按值傳遞變量的值被傳遞給被調(diào)函數(shù),并且對這個值的任何改變都不會影響被傳變量的原始值默認情況下,函數(shù)參數(shù)都是按值傳遞的參數(shù)值是通過臨時變量傳遞的所有操作都針對這些臨時變量17按地址傳遞允許函數(shù)訪問內(nèi)存位置被調(diào)函數(shù)能夠修改主
5、調(diào)程序的參數(shù)的值定義getstr(char*ptr_str,int*ptr_int);使用getstr(pstr,&var);18函數(shù)調(diào)用的嵌套main(){..palindrome();..}palindrome(){..getstr();reverse();cmp();..}19多文件程序中的函數(shù)函數(shù)可以定義成靜態(tài)的或者外部的靜態(tài)函數(shù)只能在其程序文件內(nèi)部被識別staticfn_typefn_name(argumentlist);外部函數(shù)可以被程序的所有文件識別externfn_typefn_name(argumentlist);20函數(shù)指針函數(shù)在內(nèi)存中的物理位置-函數(shù)的入口點v
6、oidcheck(char*a,char*b,int(*cmp)()){printf("testingforequality");if(!(*cmp)(a,b))printf("Equal");elseprintf("NotEqual");}#include#includevoidcheck(char*a,char*b,int(*cmp)());main(){chars1[80];chars2[80];int(*p)();p=strcmp;gets(s1);gets(s2);check(s1,s2,p);}21總結(jié)函數(shù)的結(jié)構(gòu)函數(shù)聲明和函數(shù)原
7、型按值傳遞/按地址傳遞函數(shù)的作用域規(guī)則多文件程序中的函數(shù)函數(shù)指針22