这样看C函数才对
什么是函數?從定義來看,函數就是一段可以重復使用的代碼塊,比如下面這樣
void hanshu()
{
int a = 0;
int b = 3;
}
這時候就應該有人要跳出來了,這是什么**!確實,作為一個強烈反對屎山代碼存在的編程者來說,一個好的函數應該是一個有著合理命名,并且功能緊湊的功能塊,而不僅只是一份可以重復調用執行的代碼。像下面這個一眼能看出其功能和實現邏輯才算是一個好函數。
int add(int num0, int num1)
{
return (num0 + num1);
}
有了以上的認識還不夠,我們應該更加剖根究底的看一下。總的來說,計算機是一個可以輸入輸出的系統,每個具體的項目產品也是,函數作為這座大山的基本組成單位,自然也是個系統。函數既然是一個系統,則就應該有一個系統視角的認識和理解。
傳統意義來講,一個函數的輸入,就是它的形參,一個函數的輸出就是它的返回值,對上面
Add()函數來說,num0和num1就是輸入,return (num0 + num1)則是輸出。因為語言功能的限制,使得用以上規則寫出的函數有些死板,不能靈活應對多變的編程需求,比如返回值無法直接返回一個數組,想要通過返回值返回一個數組往往需要有堆區空間的配合。
換個視角看函數輸入輸出
雖然用傳統的方法來使用函數更符合每個人的編程習慣,不過有時候我們需要打破這種規范。函數作為一個有輸入輸出的系統,我們也可以用形參或者全局變量當作為函數的輸出。
// 用形參作為函數輸出
void add(int num0, int num1, int &ret)
{
*ret = num0 + num1;
}
// 用全局變量作為函數輸出
int ret;
void add(int num0, int num1)
{
ret = (num0 + num1);
}
同理,對于函數的輸入,也不必拘泥于形參的輸入,全局變量也應該算入。
雖然以上的方式寫出的函數看起來有些別扭,但是在一些情景中卻是很管用的,尤其是將形參作為函數輸出的方式在 Linux 的系統調用中常常能看見其影子。對于函數的靈活使用能讓我們應對各種靈活的場景,也能進一步提高對于語言的理解。
總結
- 上一篇: 基于GPS定位和人脸识别的作业识别管理系
- 下一篇: cf448D Multiplicatio