一、學習目標
- 了解C語言的自定義函數的使用方法
- 了解C語言自定義函數的傳參
- 了解C語言自定義函數的返回值
目錄
預備第一篇,使用軟件介紹在這一篇,C++與C使用的軟件是一樣的,查看這篇即可:《軟件介紹》
想了解編譯原理和學習方法點這篇,學習方法和一些原理C++與C都是相同的《脫離學習誤區》
《零基礎看得懂的C++入門教程 》——(1)第一個C++程序就讓你知其所以然
《零基礎看得懂的C++入門教程 》——(2)什么是數據類型、變量?一看便會
《零基礎看得懂的C++入門教程 》——(3)表達式花樣挺多鴨
《零基礎看得懂的C++入門教程 》——(4)條件判斷原來如此
《零基礎看得懂的C++入門教程 》——(5) 容我套個娃 循環
推薦
1.《備受好評的看得懂的C語言入門教程》
歡迎大家關注公眾號,公眾號每滿1024及1024倍數則會抽獎贈送機械鍵盤一份+IT書籍2份喲~
二、了解C語言自定義函數的使用方法
在C++中函數是可以自定義的,根據自己的需求實現不同的函數方便在之后開發中使用。
2.1 了解自定義函數的使用方法
自定義函數由幾部分構成,最簡單的函數有返回類型修飾符、函數名以及函數體。返回類型的修飾符為類型修飾符,如int、float、char等;返回類型修飾符一般放在函數名前,函數名的定義方式與變量名定義規范類似;自定義函數的函數體則是在一對花括號內的代碼內容。
我們先看一個示例:
#include<iostream>
using namespace std;
void func(){cout<<"這里是自定義函數"<<endl;
}int main() {func();
}
以上代碼中,自定義函數為:
void func(){cout<<"這里是自定義函數"<<endl;
}
在以上對于函數的描述中,我們得知最簡單的函數構成為類型修飾符、函數名以及函數體。以上函數的類型修飾符為void,void表示當前函數沒有返回值(什么是返回值接下來會說到)。函數名為func,函數名后接著一堆圓括號,圓括號后有一對花括號,花括號內則是函數體。當前函數體內的內容為輸出"這里是自定義函數"
這一個提示。當前函數的功能也就是顯示 "這里是自定義函數"
這個內容了。
在main中,調用了自定義函數func。之前我們已經知道,函數使用方式為函數名后接一堆圓括號,所以代碼寫為 func();,用分號結束。調用后將會執行函數中的代碼將會顯示 "這里是自定義函數"
。
運行結果如下:
細心的同學發現,其實我們的main也是一個函數,我們使用int修飾main函數,不過main是系統函數表示當前代碼的入口,我們所編寫的代碼將會從main函數第一條語句開始運行。
2.2 了解有參函數的使用方法
有過C語言經驗的同學知道,我們經常使用printf函數,該函數我們傳入什么值將會在程序運行時顯示什么值;所傳入的值稱為參數;打個比方,洗衣機的功能是洗衣服,我們會丟衣服進去,這個衣服就是參數;再或者我們做飯的時候使用電飯鍋,電飯鍋需要的原料是米,這個米就是參數;我們自定義的函數也可以實現這個功能。例如我想顯示變量a的值,只需要修改一下上一節的代碼即可實現,代碼如下:
#include<iostream>
using namespace std;
void func(int a){cout<<"變量a 的值是:"<<a<<endl;
}int main() {int a=10;func(a);
}
以上代碼在func函數的圓括號中添加了int a
,int a
表示func函數接收一個整數類型的變量a;在func函數中,使用printf函數輸出了變量a的值,在函數中使用的a變量在func(int a)
中表示聲明,具體值需要在使用函數時傳入。使用函數傳參只需要函數名后接的圓括號中傳入值,則表示把值賦值給func圓括號中的變量a,如func(a);
則表示把外部的a變量值賦值給func函數的a變量。
在以上函數中,func(int a)
的變量a與main函數的a是有區別的;就好比你們學校校長叫做小明,你們班有個學生叫做小明,在你們班級平常稱呼中,小明指的是你們班級的小明,并不是校長;函數也一樣,在函數中,使用的a單單值函數內的a,func(int a)中的a,以及接下來函數內使用的a只代表當前函數。
結果如下:
當然傳入的值也可以寫為具體的值,代碼如下:
#include<iostream>
using namespace std;
void func(int a){cout<<"傳入的值是:"<<a<<endl;
}int main() {int a=10;func(99);
}
運行結果如下:
2.2 了解有多個參函數的使用方法
以上了解了一個參數的自定義函數,接下來了解多個參數的自定義參數使用方法。查看示例:
#include<iostream>
using namespace std;
void func(int a,int b){cout<<"a+b的值是:"<<a+b<<endl;
}int main() {int a1=10,b1=11;func(a1,b1);
}
以上代碼中,func函數接收兩個參數,一個是a,一個是b,兩個參數之間使用逗號間隔,func自定義函數中則會輸出兩個數相加的結果。在main函數中,定義了兩個變量一個為a1,一個為b1,使用func后傳入兩個變量,它們之間使用逗號間隔。
運行結果如下:
2.2 了解自定義函數返回值
我們修改上一節示例,現在需求更換為只需要得到兩個值做加法運算后的值,不需要在函數中輸出,只需要在外部輸出結果。代碼如下:
#include<iostream>
using namespace std;
int func(int a,int b){int c=a+b ;return c;
}int main() {int a=10,b=11;int c=func(a,b); cout<<c<<endl;
}
以上代碼中,void func 修改成了int func,void表示當前函數無返回值,使用int 表示當前函數將會返回一個整數值表示當前函數最終的結果。
在函數體中定義了一個整數類型變量c,并且直接賦值為a+b的結果;最后使用return關鍵字表示把變量c的值給返回出去。在外部需要使用一個變量接收如 int c=func(a,b);
,這時變量c就得到了func函數返回的值。在以上代碼中使用cout查看c的結果。
運行結果如下:
當然也可以直接輸出函數的結果值:
#include<iostream>
using namespace std;
int func(int a,int b){int c=a+b ;return c;
}int main() {int a=10,b=11;cout<<func(a,b)<<endl;
}
想要再簡便代碼一點也可以這樣:
#include<iostream>
using namespace std;
int func(int a,int b){return a+b;
}int main() {int a=10,b=11;cout<<func(a,b)<<endl;
}
描述函數返回值的修飾符一定要與返回值類型一致,否則將會出現無法預料的結果或者直接報錯。
以上代碼我使用void修飾了一個有返回值的函數,編譯器直接報錯提示我的函數是有返回值的但是用了void修飾。
三、總結
通過以上描述與講解,我們了解了以下幾點內容:
- 了解了自定義函數的基本使用方法
- 了解了自定義函數類型修飾符與變量類型修飾符一致
- 了解了有參自定義函數的使用方法
- 了解了自定義函數有返回值的使用方法