什么是函數(shù)?函數(shù)是能夠?qū)崿F(xiàn)特定功能的程序模塊,他可以是只有一條語(yǔ)句的簡(jiǎn)單函數(shù),也可以是包含許多子函數(shù)的復(fù)雜函數(shù)。 函數(shù)的分類1.簡(jiǎn)單函數(shù)和復(fù)雜函數(shù) 2.庫(kù)函數(shù)和自定義函數(shù) 3.功能函數(shù):字符函數(shù)、日期函數(shù)、數(shù)學(xué)函數(shù)、圖形函數(shù)、內(nèi)存函數(shù)等。 注: 一個(gè)程序可以只有一個(gè)主函數(shù),但是不可以沒(méi)有函數(shù)。 函數(shù)的定義類型標(biāo)識(shí)符 函數(shù)名 (形參列表) {變量的聲明語(yǔ)句} 注:
實(shí)例: int GetMax(int a , int b){int a; //變量的聲明int b;if a>b //函數(shù)功能語(yǔ)句的實(shí)現(xiàn)return a;elsereturn b;} 函數(shù)的聲明int GetMax(int a ,int b); 函數(shù)聲明被稱為函數(shù)原型,函數(shù)聲明時(shí)可以省略變量名。 實(shí)例: 函數(shù)的使用 #include <iostream>using namespace std;int GetMax(int ,int ); //函數(shù)聲明int GetMax(int a ,int b) //函數(shù)的實(shí)現(xiàn){if (a>b) //函數(shù)功能語(yǔ)句的實(shí)現(xiàn)return a;elsereturn b;}void main(){ cout << GetMax(5, 9) << endl; //函數(shù)的調(diào)用 --實(shí)參system('pause');} 注: 函數(shù)的聲明,函數(shù)的實(shí)現(xiàn),變量的聲明,變量的使用,函數(shù)的調(diào)用。 結(jié)果為: 函數(shù)參數(shù)和返回值函數(shù)參數(shù): 函數(shù)的輸入(input) 函數(shù)返回值:函數(shù)的輸出(output) 返回值要求:
空函數(shù)沒(méi)有參數(shù)和返回值,函數(shù)的作用域也為空的函數(shù)即空函數(shù)。 void setname(){} 存在的意義:預(yù)定義功能 在程序設(shè)計(jì)中往往根據(jù)需要確定若干模塊,分別由一些函數(shù)來(lái)實(shí)現(xiàn)。因此就需要先定義一個(gè)空函數(shù)占位,然后在開(kāi)發(fā)。是程序設(shè)計(jì)的結(jié)構(gòu)清除,可讀性好,以后擴(kuò)充新功能方便,且對(duì)程序結(jié)構(gòu)影響不大。形參、實(shí)參和無(wú)參 形參:a,b ---輸入變量 --函數(shù)調(diào)用時(shí)賦值。 int GetMax(int a ,int b ){int a; //變量的聲明int b;if a>b //函數(shù)功能語(yǔ)句的實(shí)現(xiàn)return a;elsereturn b;} 實(shí)參:函數(shù)調(diào)用時(shí)賦值即實(shí)參。 void main(){ GetMax(5,9); //函數(shù)的調(diào)用 --實(shí)參} 注:
默認(rèn)參數(shù)在調(diào)用有參函數(shù)時(shí),如需經(jīng)常傳遞同一個(gè)值到調(diào)用函數(shù),在定義時(shí),可以為參數(shù)設(shè)置一個(gè)默認(rèn)值,這樣在調(diào)用函數(shù)時(shí)就可以省略一些參數(shù),此時(shí)程序?qū)⒉扇∧J(rèn)值作為函數(shù)的實(shí)際參數(shù)。 實(shí)例:定義參數(shù)默認(rèn)值 #include<iostream>using namespace std;void WelYou(const char* wy='劍云鋒謝謝你們的支持,讓我們共同成長(zhǎng)!'){cout<<wy<<endl; //輸出默認(rèn)值}void main(){ WelYou(); //調(diào)用函數(shù)(默認(rèn)參數(shù)作實(shí)參) WelYou('劍云鋒祝愿大家新年快樂(lè)!'); //直接傳遞實(shí)參。 system('pause');} 注: 默認(rèn)參數(shù)不能出現(xiàn)在非默認(rèn)參數(shù)的左方。否則會(huì)導(dǎo)致編譯錯(cuò)誤。 結(jié)果為: 可變參數(shù)可變參數(shù):“...”表示可變。例如庫(kù)函數(shù)printf函數(shù)。 _CRTIMP int_cdecl printf(const char* , ...);printf('%d\n','劍云鋒'); //輸出一項(xiàng)信息printf('%s-%s-%s\n', '劍云鋒','歡迎你',',謝謝!'); //輸出多項(xiàng)信息 注: 可變參數(shù)的函數(shù),在定義函數(shù)時(shí)需要一一讀取用戶傳遞的實(shí)際參數(shù)。可以使用va_list 類型和va_start,va_arg,va_end 3個(gè)宏 讀取傳遞到函數(shù)的參數(shù)值。使用可變參數(shù),需引用stdarg.h頭文件。 實(shí)例:可變參數(shù)的定義和調(diào)用。 #include<iostream>#include<stdarg.h> //包含宏頭文件using namespace std;void WelYou(int num ,...) //定義可變參數(shù)函數(shù){va_list arguments; //定義va_list類型變量va_start(arguments,num);while(num--){char* wy =va_arg(arguments,char*); //獲取字符串?dāng)?shù)據(jù)int i=va_arg(arguments,int ); //獲取整型數(shù)據(jù)cout<<wy<<endl; //輸出字符串cout<<i<<endl; //輸出整數(shù)}va_end(arguments);}void main(){ WelYou(2, '劍云鋒',2018,'劍云鋒', 2019);//調(diào)用WelYou函數(shù)system('pause');} 結(jié)果為: 函數(shù)變量作用域變量位置分類:全局變量和局部變量。 全局變量:在函數(shù)體外定義的變量稱為全局變量。 局部變量:在函數(shù)體內(nèi)定義的變量稱為局部變量。 實(shí)例: #include <iostream>using namespace std;int total; //定義全局變量int GetCount(); //聲明函數(shù)void main(){int total=529; //局部變量cout<<total<<endl;cout<<GetCount()<<endl;system('pause');}int GetCount(){total=925; //給全局變量賦值return total;} 注:
結(jié)果為: 本文部分內(nèi)容參考至教材,如有錯(cuò)誤,敬請(qǐng)指正,如有侵權(quán),請(qǐng)聯(lián)系修改,謝謝。 |
|
來(lái)自: 昵稱32937624 > 《待分類》