對於函式的整理和理解

2021-08-17 12:25:20 字數 1016 閱讀 2409

函式的呼叫方式有三種,第一種叫傳值呼叫,這種只是單獨把實參的值傳給形參,但是形參值改變時實參值並不會發生改變

這種方式是比較簡單的呼叫方式;第二種是引用這種是把實參形參聯絡起來,意思就是實參和形參實際為乙個量;就和每種物體都有好幾個名字一樣,但卻都是指一種東西,這種呼叫方式彌補了傳值呼叫的確定,這時的子函式,在執行完畢後,實參值就已經發生改變,比如swap交換函式,sort快速排序等等;第三種叫做傳址呼叫,這種是把實參的儲存位址傳遞給形參,所以當形參發生改變時,其實是該位址上的數發生了改變,所以此時的實參發生了改變,函式執行的結果可以被傳遞回來。

這是函式三種呼叫方式的實質,在其中我最喜歡用的便是引用;他比較簡單方便。傳址呼叫要先定義指標變數,利用指標變數將實參的位址傳給形參但這時會需要再取一部分空間儲存指標變數,因此他對於引用來說,更佔空間;而傳值呼叫則不能將形參值傳遞給實參,因此有些功能我們不好實現。

我們在使用函式時還要注意對於變數的定義,變數可以分為兩大類,一種為全域性變數,另一種可以叫區域性變數。這是我們對於變數的大致概括;全域性變數是在整個程式中都可以使用,而區域性變數只可以在你定義的函式內部使用,一旦離開了函式,便不可使用,所以我們在設計程式時要注意將全域性變數和區域性變數搭配起來使用,要注意該變數的定義的位置,這樣才能更好的利用好函式。

最後我們要說的是函式的特點,函式將乙個程式分解成了多個部分,這大大減少了我們對於調程式時的難度,有了函式以後,我們只需在調程式時分開看即可,並不用非要面對整個程式來修改;在未來工作中,也是每個人負責一部分程式的編寫;函式的出現大大增加了工作效率,也使得程式設計變得整潔,在碰到需要的功能時只需將寫過的函式引用即可大大降低了工作的重複性。

在函式中還有一種特殊的函式,他叫做遞迴函式,遞迴函式很像一種函式的迴圈,他使得一些問題變得簡單,遞迴函式的設計又叫做記憶化搜尋,是將把前一步算好之後再代入後一步,比如求n的階乘時我們可以求n-1的階乘再乘n即可,n-1的階乘我們只需求n-2的階乘即可,因此可得只需知道1的階乘則可以得到2的階乘,利用2的階乘即可得到3的階乘,遞迴就是這種過程;這是遞迴的一種最簡單的方式,但卻是時實質的表現。利用遞迴我們可以將很多算過的資料存起來避免下一次重複運算。

對於malloc 函式的整理

void malloc unsigned int num bytes 分配長度為num bytes位元組的記憶體塊 函式說明 使用例項 include include intmain printf s buffer return0 執行效果 函式原型 void calloc size t num,s...

對於核函式的理解

一直都覺得核函式是乙個很難理解東西,在知乎上看到了乙個解答,感覺不錯。觀點 核函式和對映沒有關係,核函式只是用來計算對映到高維空間之後的內積的一種簡便方法。一般英文文獻對kernel有兩種提法,一是kernel function,二是kernel trick。從trick一詞中就可以看出,這只是一種...

對於strcmp函式的理解

最近在洛谷開始補基礎 所以開始狂刷水題,其中有這麼一題 剛開始看到的時候就是暴力做法,循規蹈矩寫出來就ok了 因為寫的比較暴力 就是偏亂 也感覺ac不了,但還是頭鐵交了一發,沒想到ac了。然後就開始看題解,看看有沒有什麼更好的做法,發現了可以用c 的string類直接判斷,可憐我還是用字元乙個個比較...