C++學習筆記(二)——函式
三、函式
1、函式三要素
- 返回值型別
- 函式名
- 引數列表
2、書寫自定義函式
//函式原型
int sum(int, int);
//主函式,返回值為int型別
int main()
{
//函式呼叫
int result = sum(5,3);
}
//函式定義
int sum(int num1, int num2)
{
//函式實現的程式碼
}
注:
- 函式原型與函式定義的頭部類似,最後以分號結尾
- 函式原型中的引數名稱可以省略,只寫引數型別
- C++中返回值型別不能是陣列,但可以是其他任何型別(可以將陣列作為結構或物件組成部分返回)
3、按值傳遞
——給函式傳遞變元(引數)時,引數值不會直接傳遞給函式,而是先製作引數的副本,儲存在棧上,再使這個副本可用於函式,而不是使用初始值。
4、函式指標
- 函式指標是什麼?
函式的指標是儲存其機器語言程式碼的記憶體開始地址。 - 函式指標的好處是什麼?
可以在不同的時間使用不同的函式。 - 函式指標的宣告
//函式原型
double sum(double, double);
//函式指標宣告
double(*ptrSum)(double, double)
注:
- 該語句宣告瞭一個指標ptrSum,指向一個函式
- 注意區分double *ptrSum(double, double),不是函式指標,而是宣告瞭一個函式ptrSum,返回double *型別
5、行內函數(inline)
- C++為提高程式執行速度所做的一項改進;
- 與常規函式的編寫方式不同——在函式宣告和定義前加關鍵字inline;
- 適用於簡單、頻繁呼叫的函式。
6、函式過載(overload)
——函式名相同,引數列表不同(特徵標不同)。
例:
//嘴可以
//幹吃
void eating();
//吃東西
void eating(string);
//吃很多東西
void eating(string[]);
//定個日子吃
void eating(int, int, int);
//...
7、函式模板
什麼是函式模板?
——所謂函式模板,實際上就是建立一個通用函式
- 函式定義時不指定具體的資料型別(使用虛擬型別代替);
- 函式被呼叫時編譯器根據實參反推資料型別——型別的引數化。
//模板頭與函式宣告/定義永遠是不可分割的整體!
template<typename 型別引數1, typename 型別引數2, ...>
返回值型別 函式名(形參列表)
{
//在函式體中可以使用型別引數
}
//例:使用模板技術實現變數交換值
//函式宣告
template<typename T> void Swap(T&, T&);
//模板頭
template<typename T>
void Swap(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
相關文章
- c++學習筆記 -- 建構函式C++筆記函式
- C++學習筆記-----類和建構函式C++筆記函式
- JavaScript學習筆記(二)——函式和陣列JavaScript筆記函式陣列
- async函式學習筆記。函式筆記
- Go 函式 學習筆記Go函式筆記
- 分析函式(學習筆記)函式筆記
- 生成函式 學習筆記函式筆記
- 《C++ Primer》學習筆記(六):C++模組設計——函式C++筆記函式
- C++筆記--函式C++筆記函式
- iOS學習筆記42 Swift(二)函式和閉包iOS筆記Swift函式
- TS學習筆記(四):函式筆記函式
- JavaScript學習筆記 - 原生函式JavaScript筆記函式
- Golang學習筆記-1.6 函式Golang筆記函式
- Oracle學習筆記(6)——函式Oracle筆記函式
- LoadRunner函式學習筆記函式筆記
- MYSQL學習筆記14: 函式MySql筆記函式
- C++學習筆記-C++對C語言的函式擴充C++筆記C語言函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- 二項式反演學習筆記筆記
- python學習筆記(六)——函式Python筆記函式
- OpenCV學習筆記(4)——mixChannels函式OpenCV筆記函式
- OpenCV學習筆記(5)——normalize函式OpenCV筆記ORM函式
- Flutter學習筆記(4)--Dart函式Flutter筆記Dart函式
- js純函式學習筆記(一)JS函式筆記
- c語言學習筆記===函式C語言筆記函式
- 【C#學習筆記】函式呼叫C#筆記函式
- oracle學習筆記8: 分析函式Oracle筆記函式
- 學習筆記-----一時間函式筆記函式
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- 函式學習二函式
- C++學習筆記(二) 運算子過載C++筆記
- main 函式解析(二)—— Linux-0.11 學習筆記(六)AI函式Linux筆記
- 我的 golang 學習筆記系列二:golang的函式運用Golang筆記函式
- PHP 第二週函式學習記錄PHP函式
- C++學習隨筆——C++仿函式的應用方法C++函式
- PHP 第八週函式學習筆記PHP函式筆記
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式