C语言精髓篇|函数的参数和返回值
如果把函數比喻成一臺機器,那么參數就是原材料,返回值就是最終產品;從一定程度上講,函數的作用就是根據不同的參數產生不同的返回值。
函數的參數
在函數定義中出現的參數可以看做是一個占位符,它沒有數據,只能等到函數被調用時接收傳遞進來的數據,所以稱為形式參數,簡稱形參。
函數被調用時給出的參數包含了實實在在的數據,會被函數內部的代碼使用,所以稱為實際參數,簡稱實參。
形參和實參的功能是傳遞數據,發生函數調用時,實參的值會傳遞給形參。
形參和實參有以下幾個特點:
1) 形參變量只有在函數被調用時才會分配內存,調用結束后,立刻釋放內存,所以形參變量只有在函數內部有效,不能在函數外部使用。
2) 實參可以是常量、變量、表達式、函數等,無論實參是何種類型的數據,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。
3) 實參和形參在數量上、類型上、順序上必須嚴格一致,否則會發生“類型不匹配”的錯誤。當然,如果能夠進行自動類型轉換,或者進行了強制類型轉換,那么實參類型也可以不同于形參類型。
4) 函數調用中發生的數據傳遞是單向的,只能把實參的值傳遞給形參,而不能把形參的值反向地傳遞給實參;換句話說,一旦完成數據的傳遞,實參和形參就再也沒有瓜葛了,所以,在函數調用過程中,形參的值發生改變并不會影響實參。請看下面的例子:
運行結果:
Input a number: 100↙
The inner n = 5050
The outer m = 100
1 2 3 ... 99 100 = 5050
通過 scanf 輸入 m 的值,作為實參,在調用 sum() 時傳送給形參 n。
從運行情況看,輸入 m 值為100,即實參 m 的值為100,把這個值傳給函數 sum 時,形參 n 的初始值也為100,在函數執行過程中,形參 n 的值變為 5050。函數運行結束后,輸出實參 m 的值仍為100,可見實參的值不隨形參的變化而變化。
函數的返回值
函數的返回值是指函數被調用之后,執行函數體中的代碼所得到的結果,這個結果通過 return 語句返回。
return語句的一般形式為:
或者:
return (表達式);有沒有( )都是正確的,為了簡明,一般也不寫( )。例如:
return max; return a b; return (100 200);1) 沒有返回值的函數為空類型,用void表示。例如:
void func(){printf("http://c.biancheng.net\n");}一旦函數的返回值類型被定義為 void,就不能再接收它的值了。例如,下面的語句是錯誤的:
int a = func();為了使程序有良好的可讀性并減少出錯, 凡不要求返回值的函數都應定義為 void 類型。
2) return 語句可以有多個,可以出現在函數體的任意位置,但是每次調用函數只能有一個 return 語句被執行,所以只有一個返回值(少數的編程語言支持多個返回值,例如Go語言)。例如:
如果a>b成立,就執行return a,return b不會執行;如果不成立,就執行return b,return a不會執行。
3) 函數一旦遇到 return 語句就立即返回,后面的所有語句都不會被執行到了。從這個角度看,return 語句還有強制結束函數執行的作用。例如:
第 4 行代碼就是多余的,永遠沒有執行的機會。
下面我們定義了一個判斷素數的函數,這個例子更加實用:
prime() 是一個用來求素數的函數。素數是自然數,它的值大于等于零,一旦傳遞給 prime() 的值小于零就沒有意義了,就無法判斷是否是素數了,所以一旦檢測到參數 n 的值小于 0,就使用 return 語句提前結束函數。
return 語句是提前結束函數的唯一辦法。return 后面可以跟一份數據,表示將這份數據返回到函數外面;return 后面也可以不跟任何數據,表示什么也不返回,僅僅用來結束函數。
更改上面的代碼,使得 return 后面不跟任何數據:
prime() 的返回值是 void,return 后面不能帶任何數據,直接寫分號即可
聲明:
本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。
總結
以上是生活随笔為你收集整理的C语言精髓篇|函数的参数和返回值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LINKE路由器屏蔽其他用户怎么设置如何
- 下一篇: cad墙体打散快捷键(cad打散快捷键命