JinLou-C++day09

函數(shù)

為了減少重復(fù)的代碼, 避免程序冗余, 增加代碼的可讀性
定義格式

返回值 函數(shù)名(參數(shù)列表){
        函數(shù)體
}
  • 返回值 : 有返回(返回對(duì)應(yīng)的類型, 需要使用return )/無(wú)返回(void)
  • 函數(shù)名: 起名要有語(yǔ)義, 最好使用小駝峰命名法(第一單詞首字母小寫, 其余首字母大寫)

調(diào)用函數(shù)格式

函數(shù)名();
#include <iostream>

using namespace std;
// 1.定義函數(shù): 函數(shù)定義之后需要調(diào)用才能有效果
void hello(){
    cout << "hello c++"<< endl;
}
// 
int main() {
    // 調(diào)用函數(shù)
    hello();
}

函數(shù)的形式

按照參數(shù)和返回值分類, 我們分為

  • 無(wú)參數(shù)無(wú)返回
  • 無(wú)參數(shù)有返回
  • 有參數(shù)無(wú)返回
  • 有參數(shù)有返回
#include <iostream>
using namespace std;
// 1.無(wú)參無(wú)返回
void hello() {
    cout << "hello c++" << endl;
}
// 2.無(wú)參有返回
int showAge() {
    return 100;
}
// 3.有參數(shù)無(wú)返回  int a, int b 是參數(shù)列表,
// 我們也稱 a, b 為形參, 可以理解為聲明站位
void add(int a, int b) {
    cout << a << " + " << b << " = " << a + b << endl;
}
// 4.有參數(shù)有返回  1 ~ n 累加和
int calculateNum(int n){
    int sum = 0;
    for (int i = 1; i <= n ; ++i)
        sum +=i;
    return sum;
}
int main() {
    hello();
    int age = showAge();
    cout << "age = " << age << endl;
    add(10, 20); // 10, 20 這里叫實(shí)參
    add(100, 200);
    cout << "1 ~ 100 cal = " << calculateNum(100) << endl;
    cout << "1 ~ 10 cal = " << calculateNum(10) << endl;
    cout << "1 ~ 50 cal = " << calculateNum(50) << endl;
    // 1~50累加和, 1~20 累加和, 將得到的累加和進(jìn)行相乘
    int num1 = calculateNum(50);
    int num2 = calculateNum(20);
    int res = num1 * num2;
    cout << "res = " << res << endl;


}

函數(shù)參數(shù)順序

參數(shù)傳的順序會(huì)對(duì)計(jì)算結(jié)果產(chǎn)生影響(甚至?xí)a(chǎn)生錯(cuò)誤), 為了避免歧義出現(xiàn),參數(shù)傳遞一定要注意順序

#include <iostream>
using namespace std;
void show_info(string name , int age, string addr, string gender){
    cout << "name : "<< name << endl;
    cout << "gender : "<< gender << endl;
    cout << "age : "<< age << endl;
    cout << "addr : "<< addr << endl;

}
void show_info2(string name , int age, string addr, string gender="male"){
    cout << "name : "<< name << endl;
    cout << "gender : "<< gender << endl;
    cout << "age : "<< age << endl;
    cout << "addr : "<< addr << endl;

}
int main() {
    //必須參數(shù):  函數(shù)參數(shù)傳入的順序要和聲明時(shí)保持一致, 否則會(huì)產(chǎn)生一起
    show_info("eric", 19, "shengyang", "feamle");
    cout << "======================================================================="<< endl;
    // show_info("eric", 19, "male", "beijing"); 傳參錯(cuò)誤
    // 默認(rèn)參數(shù): 函數(shù)可以設(shè)置默認(rèn)參數(shù), 這樣這個(gè)參數(shù)可以傳(傳入的值)也可以不傳(默認(rèn)的值)
    show_info2("bob", 88, "newyork"); // 此時(shí)gender="male"
    cout << "======================================================================="<< endl;
    show_info2("bob", 88, "newyork", "male"); // 此時(shí)gender="male"
}

函數(shù)傳參的兩種形式

  • 值傳遞
  1. 所謂值傳遞,就是函數(shù)調(diào)?時(shí)實(shí)參將數(shù)值傳?給形參
  2. 值傳遞時(shí),如果形參發(fā)?改變棘捣,并不會(huì)影響實(shí)參
#include <iostream>
using namespace std;
//(函數(shù)需要在調(diào)用前進(jìn)行聲明), 如果沒(méi)有, 需要使用函數(shù)的原型聲明
// 函數(shù)的原型聲明, 先聲明, 后實(shí)現(xiàn)
// 沒(méi)有函數(shù)體.只有函數(shù)名字和參數(shù)
void swap(int, int);

int main() {
    // 交換兩個(gè)變量的值
    int a = 10, b = 20;
    cout << "a = "<< a << endl;
    cout << "b = "<< b << endl;
    swap(a, b);
    cout << "a = "<< a << endl;
    cout << "b = "<< b << endl;

}
// 在main函數(shù)后面聲明
void swap(int x, int y){
    int temp;
    temp = x;
    x = y;
    y = temp;
    cout << "============swap()============"<< endl;
    cout << "x = "<< x << endl;
    cout << "y = "<< y << endl;
    cout << "++x = "<< ++x << endl;

    cout << "============swap()============"<< endl;

}
  • 引用傳遞
    引用傳遞: 如果改變參數(shù)的值, 會(huì)對(duì)原來(lái)的值產(chǎn)生影響
#include <iostream>
using namespace std;
void swap(int &x, int &y);

int main() {
    int a = 10, b = 20;
    cout << "a = "<< a << endl;
    cout << "b = "<< b << endl;
    swap(a, b);
    cout << "a = "<< a << endl;
    cout << "b = "<< b << endl;
}
// 引用傳遞值, 如果改變參數(shù)的值, 會(huì)對(duì)原來(lái)的值產(chǎn)生影響
// &取地址符號(hào)
void swap(int &x, int &y){
    int temp;
    temp = x;
    x = y;
    y = temp;
    cout << "============swap()============"<< endl;
    cout << "x = "<< x << endl;
    cout << "y = "<< y << endl;
    cout << "++x = "<< ++x << endl;

    cout << "============swap()============"<< endl;

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末人芽,一起剝皮案震驚了整個(gè)濱河市芯义,隨后出現(xiàn)的幾起案子剂桥,更是在濱河造成了極大的恐慌凯旭,老刑警劉巖篡石,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芥喇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凰萨,警方通過(guò)查閱死者的電腦和手機(jī)乃坤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沟蔑,“玉大人湿诊,你說(shuō)我怎么就攤上這事∈莶模” “怎么了厅须?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)食棕。 經(jīng)常有香客問(wèn)我朗和,道長(zhǎng),這世上最難降的妖魔是什么簿晓? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任眶拉,我火速辦了婚禮,結(jié)果婚禮上憔儿,老公的妹妹穿的比我還像新娘忆植。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布朝刊。 她就那樣靜靜地躺著耀里,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拾氓。 梳的紋絲不亂的頭發(fā)上冯挎,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音咙鞍,去河邊找鬼房官。 笑死,一個(gè)胖子當(dāng)著我的面吹牛续滋,可吹牛的內(nèi)容都是我干的翰守。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吃粒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼潦俺!你這毒婦竟也來(lái)了拒课?” 一聲冷哼從身側(cè)響起徐勃,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎早像,沒(méi)想到半個(gè)月后僻肖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卢鹦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年臀脏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冀自。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揉稚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出熬粗,到底是詐尸還是另有隱情搀玖,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布驻呐,位于F島的核電站灌诅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏含末。R本人自食惡果不足惜猜拾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佣盒。 院中可真熱鬧挎袜,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至磨总,卻和暖如春嗦明,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚪燕。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工娶牌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人馆纳。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓诗良,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鲁驶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鉴裹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.函數(shù)的基礎(chǔ): 函數(shù)的定義 定義格式:def 函數(shù)名(): 函數(shù)的調(diào)用 調(diào)用函數(shù)很簡(jiǎn)單的,通過(guò) 函數(shù)名() 即可...
    金政銳閱讀 278評(píng)論 0 0
  • 〇钥弯、前言 本文共108張圖径荔,流量黨請(qǐng)慎重! 歷時(shí)1個(gè)半月脆霎,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍总处。 ...
    Raxxie閱讀 18,952評(píng)論 17 410
  • 1.認(rèn)識(shí)js 1.1.js是javaScrip的縮寫,是一門腳本語(yǔ)言。專門用來(lái)負(fù)責(zé)網(wǎng)頁(yè)上的行為(可以直接寫到網(wǎng)頁(yè)中...
    我是一只菜鳥閱讀 247評(píng)論 0 6
  • 蘋果官方文檔翻譯 《Objective-C語(yǔ)言編程》(Programming with Objective-C) ...
    fever105閱讀 25,668評(píng)論 19 130
  • 昨晚剛剛躺下準(zhǔn)備睡覺睛蛛,我媽敲門說(shuō)和我爸吵架了鹦马,過(guò)來(lái)跟我擠擠...幾分鐘之后我爸來(lái)讓我出去一下,說(shuō)是要給我媽道歉忆肾。我...
    JJJ___閱讀 675評(píng)論 0 1