糯米文學吧

位置:首頁 > 計算機 > C語言

C語言函數的定義

C語言2.69W

引導語:函數表示每個輸入值對應唯一輸出值的一種對應關係。這種關係使一個集合裏的每一個元素對應到另一個(可能相同的)集合裏的唯一元素。以下是本站小編分享給大家的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);

}

標籤:函數 語言