所謂函數,執行特定功能的代碼塊,可以有參數和返回值,目前為止,我們使用的函數都是函數庫中提供的函數,如(printf
、getchar
和putchar
)等。現在,讓我們自己動手來編寫一些函數,我們現在通過編寫一個求冪的函數power(m,n)
來說明函數定義的方法。power(m,n)
來說明函數定義的方法。power(m,n)
函數用于計算整數m的n次冪,其中n是正整數。
#include <stdio.h>
int power(int m, int n);
/* test power function */
int main()
{
int i;
for (i = 0; i < 10; ++i)
printf("%d %d %d\n", i, power(2,i), power(3,
i));
return 0;
}
/* power: raise base to nth
power; n >= 0 */
int power(int base, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}
函數定義的一般形式為:
返回值類型 函數名(0個或多個參數聲明)
{
語句
···
}
power函數的第一行語句
int power(int base,int n)
int
為返回值類型,power
為函數名,(int base,int n)
為參數表。power
函數的參數使用的名字只在power
函數內部有效,對其他任何函數都是不可見的:其他函數可以使用與之相同的參數名字而不會引起沖突。
我們通常把函數定義中圓括號內列表中出現的變量稱為形式參數
,而把函數調用中與形式參數對應的值稱為實際參數
。
power
函數計算所得的結果通過return
語句返回給main
函數。關鍵字return
的后面可以跟任何表達式,形式為:
return 表達式;
函數不一定都有返回值。不帶表達式的return
語句把控制權返回給調用者,但不返回有用的值。
main
函數末尾有一個return
語句。由于main
本身也是函數,因此也可以向其調用者返回一個值,該調用者實際就是程序的執行環境。一般來說,返回0表示程序正常終止,返回值為非0表示出現異常情況。
出現在main
函數之前的聲明語句
int power(int m,int n);
這個叫函數聲明,表示power
函數有兩個int
類型參數,并返回一個int
類型的值。這種聲明稱為函數原型,它必須和power
函數的定義和用法一致。如果函數的定義、用法和函數聲明的原型不一致,將出現錯誤。
函數原型與函數聲明中參數名不要求相同,而且函數原型中,參數名也不是必須的:
int power(int,int);
但是,合適的參數名能起到很好的說明性作用,因此我們在函數原型中總是指定參數名。