C++ 添加新函數(shù)

2023-03-20 15:48 更新

到目前為止我們只使用了C++內(nèi)置的函數(shù),然而也可以添加新函數(shù)。實(shí)際上我們已經(jīng)見過一個(gè)函數(shù)定義了:main。main這個(gè)函數(shù)名很特殊,因?yàn)樗硎境绦蜷_始執(zhí)行的地方,但main函數(shù)的語法形式和其它函數(shù)定義一樣:

void 函數(shù)名(參數(shù)列表) {
  語句
}

你可以為自己的函數(shù)任意定義名稱,但不能命名為main或者其它C++關(guān)鍵字。參數(shù)列表指定了使用(或稱為調(diào)用)新函數(shù)所需要提供的信息(如果有的話)。

main函數(shù)定義中的空括號(hào)表示它不攜帶任何參數(shù)。我們首先要寫的幾個(gè)函數(shù)也是沒有參數(shù)的,語法形式如下:

void newLine() {
  cout << endl;
}

此函數(shù)名為newLine,只有一個(gè)語句,用以輸出換行符,其中換行用特殊值endl表示。

在main函數(shù)中,我們可以像調(diào)用C++內(nèi)置函數(shù)一樣調(diào)用這個(gè)新函數(shù): void main () { cout << "First Line." << endl; newLine (); cout << "Second Line." << endl; }

這段程序輸出如下: First line.

Second line.

注意:輸出的兩行之間有多余的空行。我們要想在兩行之間出現(xiàn)更多的空行該怎么做呢?可以重復(fù)調(diào)用同一個(gè)函數(shù):

void main ()
{
    cout << "First Line." << endl;
    newLine ();
    newLine ();
    newLine ();
    cout << "Second Line." << endl;
}

或者我們寫一個(gè)新函數(shù),命名為threeLine,作用是打印3個(gè)空行:

void threeLine ()
{
  newLine (); newLine (); newLine ();
}
void main ()
{
    cout << "First Line." << endl;
    threeLine ();
    cout << "Second Line." << endl;
}

對(duì)于這個(gè)程序,你應(yīng)該注意以下幾點(diǎn):

你可以反復(fù)調(diào)用同一處理過程,事實(shí)上這種做法是非常普遍、實(shí)用的。

你可以讓一個(gè)函數(shù)調(diào)用另一函數(shù)。在本例中,main函數(shù)調(diào)用threeLine,threeLine又調(diào)用newLine。同樣,這也是普遍、實(shí)用的做法。

在threeLine這個(gè)函數(shù)中,我一行寫了三條語句,這符合語法規(guī)范(記住,空格和空行通常不改變程序的意義)。然而更好的方式通常是每條語句獨(dú)占一行,這樣程序更易讀,我是為了節(jié)約篇幅才破壞了這條規(guī)則。

為什么我們值得費(fèi)力氣來創(chuàng)建這些新函數(shù)?到現(xiàn)在為止可能講的還不是很清楚。實(shí)際上原因有很多,本例只說明了兩點(diǎn):

創(chuàng)建新函數(shù)使你有機(jī)會(huì)給一組語句起個(gè)名字。函數(shù)將一個(gè)復(fù)雜的計(jì)算過程隱藏在一個(gè)簡(jiǎn)單指令背后,并使用英語單詞取代晦澀代碼,可以起到簡(jiǎn)化程序的作用。試問,newLine和cout << endl,哪個(gè)更清晰呢?

創(chuàng)建新函數(shù)能夠去除重復(fù)代碼,使程序更短小。例如,連續(xù)打印九個(gè)空行的一種簡(jiǎn)單做法是調(diào)用treeLine三次,那么連續(xù)打印27個(gè)空行你要怎么做呢?

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)