函數(shù)
一個函數(shù)是用于完成特定任務(wù)的程序代碼的自包含單元。它可以執(zhí)行某些動作,如使用printf進行輸出;或返回一個值供程序使用,也可以同時具有以上兩種功能。
調(diào)用它
使用函數(shù)就像購物一樣,你花費RMB,得到需要的東西。在C語言中使用一個函數(shù),稱之為調(diào)用。調(diào)用一個函數(shù)的形式如下:函數(shù)名 (以逗號分隔的參數(shù)列表);
C語言要求一個名稱被使用之前需要被看到。函數(shù)名也是一個名稱,如printf()函數(shù)一樣,它的名稱聲明在stdio.h中,因此你包含了這個頭文件。使用對應函數(shù),就需要包含對應的頭文件。
回想最簡單的Hello, World!程序 ,你會發(fā)現(xiàn)我們在程序中顯示的調(diào)用了頭文件stdio.h提供的printf()函數(shù);同時main函數(shù)被間接的調(diào)用——因為我們沒有明確的使用調(diào)用語法,但它卻執(zhí)行了。
函數(shù)可以有返回值,表明函數(shù)運行的最終結(jié)果。就像你滿懷心喜,去買牛肉魚丸,店主告訴你沒有魚丸一樣,付出不一定都是滿意的答案。這個返回值可以賦給一個變量,可以忽略,也可以直接做為其它函數(shù)的參數(shù)。
簡單的例子
一切從最簡單處開始,假定有一個求矩形面積的函數(shù),calcRectArea。
int calcRectArea( int width, int height )
{
return width * height;
}
現(xiàn)在讓我們嘗試用調(diào)用語法在main()函數(shù)中使用它。
首先是函數(shù)名:calcRectArea
然后是左括號,calcRectArea(
矩形的面積=寬x高,表明這個函數(shù)需要兩個參數(shù),calcRectArea( 24, 35
然后是右括號與語句結(jié)束符calcRectArea(24, 35);
在這里,我們只是把函數(shù)調(diào)用了一下,并沒有輸出結(jié)果,如果這時你運行程序,會發(fā)現(xiàn)好像什么都沒有發(fā)生。這就是丟棄函數(shù)返回值。
完整的例子
此刻,我們并不需要掌握關(guān)于函數(shù)更多的語法,所以不要糾結(jié)于整個calcRectArea的實現(xiàn)上。現(xiàn)在的目標就是調(diào)用它!來看看本節(jié)最終的完全示例,確保你理解了。
#include <stdio.h>
int calcRectArea( int width, int height )
{
return width * height;
}
float calcCircleArea( float r )
{
return 3.14f * r * r;
}
int getMyAge()
{
return 12;
}
// 先不用著急理解上面三個函數(shù)的定義,目標只是使用它們!
int main()
{
int rw = 20;
int rh = 12;
// 把函數(shù)返回值賦值給變量
int rectArea = calcRectArea( rw, rh );
printf( "area of rect(%d x %d): %d\n", rw, rh, rectArea );
// 把函數(shù)值傳遞給另一個函數(shù)
printf( "area of circle: %f\n", calcCircleArea( 2.35f ) );
// 調(diào)用函數(shù)但丟棄返回值
getMyAge();
printf( "here...\n" );
return 0;
}