1. 如果函數沒有聲明, 應該在調用前定義:
#include <stdio.h>/* 定義求大值函數 */int MAX(int x, int y) { if (x > y) return x; else return y;} /* 定義求小值函數 */int MIN(int x, int y) { return x
2. 可以在函數頭聲明:
#include <stdio.h>int main(void){ int a = 5; int b = 6; /* 在函數頭聲明要使用的函數 */ int MAX(int x, int y); int MIN(int x, int y); /* 調用函數 */ printf("%d\n", MAX(a,b)); printf("%d\n", MIN(a,b)); getchar(); return 0;}/* 定義求大值函數 */int MAX(int x, int y) { if (x > y) return x; else return y;} /* 定義求小值函數 */int MIN(int x, int y) { return x
3. 但一般應在檔案頭聲明:
函數原型的聲明在實際運用中, 會集中聲明在標頭檔(*.h)裡面.
#include <stdio.h>/* 在檔案頭聲明要使用的函數 */int MAX(int x, int y);int MIN(int x, int y); int main(void){ int a = 5; int b = 6; /* 調用函數 */ printf("%d\n", MAX(a,b)); printf("%d\n", MIN(a,b)); getchar(); return 0;}/* 定義求大值函數 */int MAX(int x, int y) { if (x > y) return x; else return y;} /* 定義求小值函數 */int MIN(int x, int y) { return x
4. 函數可互調用, 但不能嵌套:
#include <stdio.h>void PrintSum(int x, int y);int sum(int x, int y); int main(void){ PrintSum(1,2); PrintSum(111,222); getchar(); return 0;}void PrintSum(int x, int y) { printf("%d + %d = %d;", x, y, sum(x,y)); putchar('\n');}int sum(int x, int y) { return x + y;}
5. 關於無參數、無傳回值的函數:
如果函數沒有參數, 最好是 fun(void), 不過 fun() 也行;
如果函數沒有傳回值, 要註明傳回型別是 void;
在 C 語言中調用無參函數也要帶括弧.
#include <stdio.h>void prn(void);int main(void){ prn(); /* 調用無參函數 */ getchar(); return 0;}void prn(void) { printf("ok\n");}
6. 聲明函數時可以省略形參:
#include <stdio.h>int sum(int, int, int); /* 省略形式參數 */int main(void){ printf("%d\n", sum(1,2,3)); getchar(); return 0;}int sum(int x, int y, int z){ return(x + y + z);}
7. 函數的參數一般不要超過 7 個:
但 C99 可以支援到 127 個參數.
#include <stdio.h>int sum(int, int, int, int, int, int, int);int main(void){ printf("%d\n", sum(1,2,3,4,5,6,7)); getchar(); return 0;}int sum(int a, int b, int c, int d, int e, int f, int g){ return(a + b + c + d + e + f + g);}