當前位置:才華齋>計算機>C語言>

C語言函式的定義

C語言 閱讀(2.73W)

引導語:函式表示每個輸入值對應唯一輸出值的一種對應關係。這種關係使一個集合裡的每一個元素對應到另一個(可能相同的)集合裡的唯一元素。以下是本站小編分享給大家的C語言函式的定義,歡迎參考學習!

C語言函式的定義

  一、函式的定義

一個函式包括函式頭和語句體兩部分。

函式頭由下列三不分組成:

函式返回值型別

函式名

引數表

一個完整的函式應該是這樣的:

函式返回值型別 函式名(引數表)

{

語句體;

}

函式返回值型別可以是前面說到的某個資料型別、或者是某個資料型別的指標、指向結構的指標、指向陣列的指標。指標概念到以後再介紹。

函式名在程式中必須是唯一的,它也遵循識別符號命名規則

引數表可以沒有也可以有多個,在函式呼叫的時候,實際引數將被拷貝到這些變數中。語句體包括區域性變數的宣告和可執行程式碼。

我們在前面其實已經接觸過函數了,如abs(),sqrt(),我們並不知道它的內部是什麼,我們只要會使用它即可。

這一節主要講解無引數無返回值的函式呼叫。

 二、函式的宣告和呼叫

為了呼叫一個函式,必須事先宣告該函式的返回值型別和引數型別,這和使用變數的道理是一樣的(有一種可以例外,就是函式的定義在呼叫之前,下面再講述)。

看一個簡單的例子:

void a(); /*函式宣告*/

main()

{

a(); /*函式呼叫*/

}

void a() /*函式定義*/

{

int num;

scanf(%d,&num);

printf(%dn,num);

}

在main()的前面聲明瞭一個函式,函式型別是void型,函式名為a,無引數。然後在main()函式裡面呼叫這個函式,該函式的作用很簡單,就是輸入一個整數然後再顯示它。在呼叫函式之前聲明瞭該函式其實它和下面這個程式的'功能是一樣的:

main()

{

int num;

scanf(%d,&num);

printf(%dn,num);

}

可以看出,實際上就是把a()函式裡面的所有內容直接搬到main()函式裡面(注意,這句話不是絕對的。)

我們前面已經說了,當定義在呼叫之前時,可以不宣告函式。所以上面的程式和下面這個也是等價的:

void a()

{

int num;

scanf(%d,&num);

printf(%dn,num);

}

main()

{

a();

}

因為定義在呼叫之前,所以可以不宣告函式,這是因為編譯器在編譯的時候,已經發現a是一個函式名,是無返回值型別無引數的函數了。

那麼很多人也許就會想,那我們何必還要宣告這一步呢?我們只要把所有的函式的定義都放在前面不就可以了嗎?這種想法是不可取的,一個好的程式設計師總是在程式的開頭宣告所有用到的函式和變數,這是為了以後好檢查。

前面說了,在呼叫之前,必須先宣告函式,所以下面的做法也是正確的(但在這裡我個人並不提倡)。

main()

{

void a();

a();

}

v  oid a()

{

int num;

scanf(%d,&num);

printf(%dn,num);

}

一般來說,比較好的程式書寫順序是,先宣告函式,然後寫主函式,然後再寫那些自定義的函式。

既然main()函式可以呼叫別的函式,那麼我們自己定義的函式能不能再呼叫其他函式呢?答案是可以的。看下面的例子:

void a();

void b();

main()

{

a();

}

void a()

{

b();

}

void b()

{

int num;

scanf(%d,&num);

printf(%dn,num);

}