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);
}
-
2017年C語言新增無紙化真題練習
C語言的應用範圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。以下是小編為大家搜索整理的2017年C語言新增無紙化真題練習,希望能給大家帶來幫助!更多...
-
關於C語言精選模擬練習題
C語言是一個有結構化程序設計、具有變量作用域(variablescope)以及遞歸功能的過程式語言。下面是小編為大家整理的關於C語言精選模擬練習題,歡迎參考~5:請編寫一個函數fun,它的功能是:比較兩個字符串的長度,(不得調用c語言提供的`求字符串長度的函數),函數返回較長...
-
c語言中多個if的用法
c語言中多個if的用法的用法你知道嗎?下面小編就跟你們詳細介紹下c語言中多個if的用法的用法,希望對你們有用。c語言中多個if的用法的用法如下:用if語句可以構成分支結構。它根據給定的條件進行判斷,以決定執行某個分支程序段。C語言的if語句有三種基本形式。語句的...
-
2017年3月計算機二級C語言考試摸底測試題
以下是yjbys考試網小編整理的2017年3月計算機二級C語言考試摸底測試題,希望對大家有所幫助,祝大家計算機二級考試順利通過。一、選擇題(每小題1分。)(1)程序流程圖中帶有箭頭的線段表示的是()。A.圖元關係B.數據流C.控制流D.調用關係(2)結構化程序設計的基本原則...