C++中的函數(shù)你真的理解了嗎
1 概述
作用:將一段經(jīng)常使用的代碼進(jìn)行封裝起來,減少重復(fù)代碼。
一個(gè)較大的程序,一般分為若干個(gè)程序塊,每個(gè)模塊實(shí)現(xiàn)特定的功能。
2 函數(shù)的定義及調(diào)用
函數(shù)的定義一般主要有5個(gè)步驟:
1、返回值類型:一個(gè)函數(shù)可以返回一個(gè)值,需要知道這個(gè)值的類型。
2、函數(shù)名:給函數(shù)起個(gè)名字。
3、參數(shù)表列:使用該函數(shù)時(shí),傳入的數(shù)據(jù)。
4、函數(shù)體語句:花括號(hào)內(nèi)的代碼,函數(shù)內(nèi)需要執(zhí)行的語句。
5、return 表達(dá)式:和返回值類型掛鉤,函數(shù)執(zhí)行完后,返回相應(yīng)的數(shù)據(jù)。
定義語法:
返回值類型 函數(shù)名(參數(shù)列表)
{
函數(shù)體語句;
return表達(dá)式;
}
調(diào)用語法:
函數(shù)名(參數(shù))
示例:
#include<iostream>
using namespace std;
//返回值類型 函數(shù)名 (參數(shù)列表){ 函數(shù)體語句 ; return表達(dá)式;}
//定義一個(gè)兩整型數(shù)相加的函數(shù)
int add(int num1, int num2)//num1和num2并沒有真實(shí)數(shù)據(jù),只是一個(gè)形式上的參數(shù),簡稱形參
{
int sum = num1 + num2;
return sum;
}
int main()
{ //main函數(shù)中調(diào)用add函數(shù)
int a = 3, b = 4;
//函數(shù)調(diào)用語法:函數(shù)名稱(參數(shù))
int c = add(a, b); //a和b是真實(shí)的數(shù)據(jù),稱為實(shí)際參數(shù),簡稱實(shí)參
cout << c << endl;
system("pause");
return 0;
}
3 值傳遞
- 所謂值傳遞,就是函數(shù)調(diào)用時(shí)實(shí)參將數(shù)值傳入給形參。
- 值傳遞時(shí),如果形參發(fā)生任何改變,并不會(huì)影響實(shí)參。
#include<iostream>
using namespace std;
//定義一個(gè)交換數(shù)字的函數(shù)
//因?yàn)楹瘮?shù)沒有返回值,所以可以定義函數(shù)類型為void-無類型。
void swap(int num1,int num2)
{
cout << "交換前:" << num1 << " " << num2 << endl;
int temp = num1;
num1 = num2;
num2 = temp;
cout << "交換后:" << num1 << " " << num2 << endl;
}
int main()
{
int a = 10, b = 20;
swap(a, b);
//形參的改變并不影響實(shí)參本身
cout << "a = " << a << "\n" << "b = " << b << endl;
system("pause");
return 0;
}
值傳遞實(shí)際上是為形參開辟一塊新的內(nèi)存地址,將實(shí)參的值傳遞給形參的內(nèi)存中,對(duì)形參進(jìn)行運(yùn)算,所以并不涉及到實(shí)參的改變。
4 函數(shù)的常見形式
常見的函數(shù)樣式有4種:
- 無參無返
- 有參無返
- 無參有返
- 有參有返
示例:
#include<iostream>
using namespace std;
//1.無參無返
void test01()
{
cout << "無參無返" << endl;
}
//2.有參無返
void test02(int num1,int num2)
{
cout << "有參無返" << num1 << num2 << endl;
}
//3.無參有返
int test03()
{
cout << "無參有返 " ;
return 1000;
}
//4.有參有返
int test04(int num)
{
cout << "有參有返 " ;
return num;
}
int main()
{
test01();
test02(100, 200);
cout << "返回值為:" << test03() << endl;
cout << "返回值為:" << test04(100) << endl;
system("pause");
return 0;
}
5 函數(shù)的聲明
作用:告訴編譯器函數(shù)名稱及如何調(diào)用函數(shù)。函數(shù)的實(shí)際主體可以單獨(dú)定義。
當(dāng)自己創(chuàng)建的函數(shù)位于main函數(shù)下方的時(shí)候,編譯器會(huì)先運(yùn)行main函數(shù),從而找不到我們定義的函數(shù)而報(bào)錯(cuò),所以需要函數(shù)聲明,這樣我們的函數(shù)定義就可以放在main函數(shù)的下方了。
- 函數(shù)的聲明可以多次,但是函數(shù)的定義只能有一次。
語法:
數(shù)據(jù)類型 函數(shù)名(參數(shù)列表)
示例:
#include<iostream>
using namespace std;
//函數(shù)的聲明
int maxtest(int a, int b);
int main()
{
//int maxtest(int a, int b); 寫這里也可以
int a = 10;
int b = 20;
cout << maxtest(a, b) << endl;
system("pause");
return 0;
}
//定義函數(shù)
int maxtest(int a, int b)
{
return a > b ? a : b;
}
6 函數(shù)的分文件編寫作用:讓代碼結(jié)構(gòu)更加清晰
作用:讓代碼結(jié)構(gòu)更加清晰
函數(shù)分文件編寫一般有4個(gè)步驟:
- 創(chuàng)建后綴名為.h的頭文件
- 創(chuàng)建后綴名為.cpp的源文件
- 在頭文件中寫函數(shù)的聲明
- 在源文件中寫函數(shù)的定義
-----注意下面的這個(gè)例子使用了swap的函數(shù)名,而上面源文件中的函數(shù)名已經(jīng)有了swap,一個(gè)項(xiàng)目里不能對(duì)同一函數(shù)名多次定義,所以可以手動(dòng)改一下上面"值傳遞.cpp中的"的swap函數(shù)名,隨便換一個(gè)其他的就行。
1.


2.


3.

#include<iostream> using namespace std; void swap(int a, int b);
4.

#include"swap.h"
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}

#include<iostream>
#include"swap.h"
using namespace std;
int main()
{
int a = 10, b = 20;
swap(a, b);
system("pause");
return 0;
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
C++實(shí)現(xiàn)LeetCode(80.有序數(shù)組中去除重復(fù)項(xiàng)之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(80.有序數(shù)組中去除重復(fù)項(xiàng)之二),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
Linux系統(tǒng)下C語言gets函數(shù)出現(xiàn)警告問題的解決方法
這篇文章主要給大家介紹了關(guān)于在Linux系統(tǒng)下C語言gets函數(shù)出現(xiàn)警告問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
使用Qt開發(fā)實(shí)現(xiàn)字幕滾動(dòng)效果
我們經(jīng)常能夠在外面看到那種滾動(dòng)字幕,那么就拿qt來做一個(gè)吧,文章通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有有一定的參考價(jià)值,需要的朋友可以參考下2023-11-11
C/C++?Qt?TreeWidget?單層樹形組件應(yīng)用小結(jié)
TreeWidget?目錄樹組件,該組件適用于創(chuàng)建和管理目錄樹結(jié)構(gòu),在開發(fā)中我們經(jīng)常會(huì)把它當(dāng)作一個(gè)升級(jí)版的ListView組件使用,本文將通過TreeWidget實(shí)現(xiàn)多字段顯示,并增加一個(gè)自定義菜單,通過在指定記錄上右鍵可彈出該菜單并對(duì)指定記錄進(jìn)行操作2021-11-11

