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ù)體語句:花括號內(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)存中,對形參進(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)目里不能對同一函數(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ù)參數(shù)的入棧順序詳解及實(shí)例
這篇文章主要介紹了C語言中函數(shù)參數(shù)的入棧順序詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-02-02
C語言從猜數(shù)字游戲中理解數(shù)據(jù)結(jié)構(gòu)
猜數(shù)字是興起于英國的益智類小游戲,起源于20世紀(jì)中期,一般由兩個(gè)人或多人玩,也可以由一個(gè)人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來用這個(gè)游戲案例理解數(shù)據(jù)結(jié)構(gòu)2022-04-04
Vscode配置C/C++環(huán)境使用minGW(保姆級配置過程)
本文主要介紹了Vscode配置C/C++環(huán)境使用minGW(保姆級配置過程),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
詳解約瑟夫環(huán)問題及其相關(guān)的C語言算法實(shí)現(xiàn)
這篇文章主要介紹了詳解約瑟夫環(huán)問題及其相關(guān)的C語言算法實(shí)現(xiàn),也是ACM當(dāng)中經(jīng)常會(huì)引用到的基礎(chǔ)題目,文中共介紹了三種C語言解答,需要的朋友可以參考下2015-08-08
c語言根據(jù)用戶輸入的出生年份并計(jì)算出當(dāng)前年齡
這篇文章主要介紹了c語言根據(jù)用戶輸入的出生年份并計(jì)算出當(dāng)前年齡,需要的朋友可以參考下2023-03-03
C語言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn)
這篇文章主要介紹了C語言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

