C語言基礎:函數的聲明與定義

在這一章中我們來學習一下關於函數的定義與使用。關於函數的概念我們可以這樣理解,函數是一個功能的集合,它可以根據輸入完成特寫的功能,並將結果輸出。當然有時候函數只是為了實現一些特寫功能而並不一定要有輸入或輸入。我們想要自己編寫一個函數需要編寫兩部分內容:聲明和定義。函數的聲明就是告訴編譯器我們想要定義一個函數,並明確規定其返回值(輸出)、函數名、參數表(輸入)。聲明函數的語法如下:

type function_name(type var);

下面我們來看幾個聲明函數的例子:

int max(int a, int b); //返回兩個變數中值較大的值。float sum(float a, float b, float c); //返回三個變數a、b、c的和。printf(char *fmt, ...); //按格式顯示

注意,關於printf函數中fmt參數後面的...表示這個函數可以接收不定個數的參數。關於這種不定參數類型的函數我們將在後續章節中學習。

對函數做出了聲明之後,就可以定義函數的實現功能了,實現函數功能時,函數的名稱,返回值,參數表必須要與此函數聲明時一致。下面我們來實現上面前兩個函數:

int max(int a, int b){ if (a < b) { return b; } return a;}float sum(float a, float b, float c){ return a + b + c;}

定義好了函數內容我們就可以來使用這兩個函數了。下面我們來編寫程序調用這兩個函數:

#include <stdio.h>int max(int a, int b);float sum(float a, float b, float c);int main(int argc, char *argv[]){ int a = 1, b = 2; float c = 2.3, d = 3.4, e = 4.5; int f = max(a, b); float g = sum(c, d, e); printf("%d %f
", f, g); return 0;}int max(int a, int b){ if (a < b) { return b; } return a;}float sum(float a, float b, float c){ return a + b + c;}

當一個函數的定義在調用這個函數之前時,可以不用聲明這個函數。例如:

#include <stdio.h>int max(int a, int b){ if (a < b) { return b; } return a;}float sum(float a, float b, float c){ return a + b + c;}int main(int argc, char *argv[]){ int a = 1, b = 2; float c = 2.3, d = 3.4, e = 4.5; int f = max(a, b); float g = sum(c, d, e); printf("%d %f
", f, g); return 0;}

但是我們通常編寫的函數往往會提供給很多程序來調用,而且在函數內部往往也要調用其它函數。如果不對函數做聲明的話,多個相互調用的函數將無法通過編譯器編譯,也就無法使用,所以還是建議讀者在編寫函數時先對函數做聲明。

歡迎關注公眾號:編程外星人


推薦閱讀:

TAG:編程 | C編程語言 | 編程語言 |