
函數的概念
一個函數由:函數的返回值類型、函數名、參數表、函數體 這4個部分組成。

int Add( int _a , int _b )
{return _a + _b;
}
該函數 Add 完成對兩個整型數據的求和功能。
函數的調用方式: 函數名(參數表);
在代碼區鍵入如下代碼,觀察程序運行結果
#include<iostream>using namespace std;int Add( int _a , int _b ){return _a + _b;}void main()
{int iResult = Add(3, 5); // 該行既為函數的調用cout<<iResult<<endl;system(“pause”);}
函數的定義,聲明、實現
函數的定義:該函數出現的時候就具有返回值、函數名、參數表、函數體
在代碼區鍵入如下代碼,觀察運行結果:
#include <iostream>using namespace std;void GetSum( int _a , int _b )
{cout<<"兩數之和為:"<<_a+_b<<endl;}void main()
{GetSum(3,5);system("pause");}

如果代碼變為如下樣子,是否有問題?
#include <iostream>using namespace std;void GetSum(int, int);void main()
{GetSum(3,5);system("pause");}void GetSum( int _a , int _b )
{cout<<"兩數之和為:"<<_a+_b<<endl;}

如果代碼變為如下樣子,是否有問題?
#include <iostream>
using namespace std;void main()
{void GetSum( int _a , int _b ){cout<<"兩數之和為:"<<_a+_b<<endl;}GetSum(3,5);system("pause");}

函數的聲明:該函數出現的時候只具有返回值、函數名、參數表,但是缺少函數體,而以分號作為結尾
函數的實現:在聲明過一個函數之后,我們為其添加函數體的過程
在代碼區鍵入如下代碼,觀察運行結果
#include <iostream>
using namespace std;void GetSum( int, int); // 聲明一個函數void main()
{GetSum(3,5); //調用一個已經聲明過的函數system("pause");}

代碼修改如下,觀察運行結果
#include <iostream>
using namespace std;void GetSum( int , int ); // 函數的聲明,在聲明一個函數的時候我們可以不給出函數的形參名void main()
{GetSum(3,5); //調用一個已經聲明過的函數system("pause");}void GetSum( int _a , int _b ) //函數的實現
{cout<<"兩數之和為:"<<_a+_b<<endl;}

通過以上講解可以看出:
- 一個函數既可以定義,也可以先聲明,后實現
- 兩種形式的函數在調用上無區別
- 函數的定義往往出現在程序結構相對簡單的代碼中
- 函數的聲明、實現經常出現在代碼需要拆分為 .h 與 .cpp兩個文件中的情況(例如我們后面將要講解的類,類的函數的聲明出現在它的.h文件中,而該函數的實現往往出現在.cpp文件中)
一個函數:由函數返回值、函數名、參數表、函數體這四個部分組成
- 函數返回值:可以是任何基本數據類型。
- 函數名是由用戶定義的標識符,需遵循C++標識符命名規則。
- 函數的參數表,由()中間的參數組成。參數是用于向函數傳遞數據的變量。
- 函數體為當前函數所能完成功能的復合語句。
注意:main函數是一個特殊的函數,它是C++的入口函數。
函數返回值可以是任何基本數據類型。
在代碼區鍵入以下代碼,編譯并運行后查看結果
#include <iostream>
using namespace std;int getSum(int _a , int _b)
{return _a+_b;}void main(){int iResult = getSum(3,5);cout<<"3+5 = "<<iResult<<endl;system("pause");
}

函數的返回值
將代碼改寫為如下,編譯并運行后查看結果
#include <iostream>using namespace std;int getSum(int _a , int _b)
{return _a+_b;}void main(){// int iResult = getSum(3,5);cout<<"3+5 = "<<getSum(3,5)<<endl;system("pause");}

在函數的返回值類型不是“void”的情況下,函數體內部必須至少存在一個“return”語句,用于返回必要的數據。
#include <iostream>
using namespace std;bool playerIsDead(int _hp)
{if( _hp > 0 )return false;return true;
}
void main(){int iHP = 0;cout<<"請輸入玩家HP:"<<endl;cin>>iHP;if( playerIsDead(iHP) )cout<<"玩家死亡"<<endl;elsecout<<"玩家存活"<<endl;system("pause");
}


注意:在函數內部需要分支返回的情況下,必須確保所有分支路徑都具有返回值。否則程序將會提示警告:“不是所有路徑都有返回值”
如果一個函數不需要返回任何數據,使用void作為函數的返回值
如果一個函數的返回值為void時,return語句可以省略。
在代碼區鍵入以下代碼,編譯運行查看結果
#include <iostream>
using namespace std;void printArray( int _iArray[] , int _length ){for(int i = 0 ; i < _length ; ++i)cout<<_iArray[i]<<endl;
}
void main(){int iArray[10] = {1,2,3,4,5,6,7,8,9,10};printArray(iArray,10);system("pause");}

函數名
函數名的命名要遵循C++標識符的命名規則。
可以采取駝峰式命名規則:
如:
GetSum
PlayerIsDead
首個單詞首字母小寫,其他單詞首字母大寫
函數的參數表
函數的參數表由() 中間添加向該函數傳遞的參數組成。
參數是用于向函數傳遞數據的變量。
函數參數的()中可以沒有任何參數,但是()不能省略
#include <iostream>
using namespace std;void main()
{cout<<"parameter"<<endl;system("pause");
}

函數的參數分為兩種:形式參數(形參)、實際參數(實參)
形參出現在函數聲明或定義中,在整個函數體內都可以使用,離開該函數則不能使用。
實參出現在調用語句中,進入被調函數后,實參不能使用。
在代碼區鍵入如下代碼,編譯并運行查看結果:
#include <iostream>
using namespace std;int getMax( int _a , int _b ) {return _a > _b ? _a: _b;
}void main()
{int iValue1 = 10 , iValue2 = 5;cout<<"較大的為:"<<getMax(iValue1,iValue2)<<endl;system("pause");}

函數的形參和實參具有以下特點:
- 形參變量只有在被調用時才分配內存單元,在調用結束時釋放所分配的內存單元。
- 實參可以是常量、變量、表達式等。
- 實參和形參的數量和順序應嚴格一致。
函數的缺省參數(默認參數、可選參數):
在函數的參數表中被賦以初始值的參數
函數可以在參數表中設置一個或多個參數的缺省值。
void Test( int _a , int _b = 4);
Test(); //正確
Test(10); //正確
Test(100,200); //正確
Test( , 200); //錯誤
函數調用時,實參表和形參表中的參數是按位置對應的。
缺省參數只能從后向前替代缺少的實參值。
如果我們將沒有賦初始值的參數稱之為:必選參數,那么當我們在定義一個函數的時候:
該函數的參數中必須同時既有必選參數,又有可選參數,它的定義形式一定為:
返回值 函數名(必選參數1,.,.,必選參數n,可選參數1,.,.,可選參數n)
void Test( ); //正確
void Test( int _a ); //正確
void Test( int _a , int _b = 0 ); //正確
void Test( int _a = 0 , int _b = 0 ); //正確
void Test( int _a = 0 , int _b ); //錯誤
函數體
函數體為當前函數所能完成功能的復合語句。
例如:該函數返回兩個參數中較大的一個
int getMax( int _a , int _b ) {if(_a > _b)return _a;elsereturn _b;}
今天主要講解了函數的基本概念、函數的聲明、實現、定義,函數的基本組成部分等函數相關的基本概念。
這些基本概念是我進行后續學習的基礎。
學習資料領取:
https://pan.baidu.com/s/1VX_zb_eqWH_coos1ZB9QQw
提取碼:w8st
學習從來都不是一個人的事,如果你感覺小編的這篇文章對你有幫助的話,可以關注小編首頁和小編來一起學習C/C++語言,小編會持續更新后續的內容哦!!