《c和指標》摘錄5 函式

2021-07-23 08:46:57 字數 1228 閱讀 2372

對於乙個規模較大的程式,為了便於實現和維護,一般將其分為若干個程式模組,每個模組實現一定多功能。在c語言中,由函式實現模組的功能。乙個c程式由多個函式構成。

與生活中「介面「例子類似,函式需要有明確的輸入、輸出規範。

函式定義

返回值型別 函式名(引數列表)

函式的引數傳遞2方式

定義變數後,系統要做2件事,一給變數分配記憶體,二建立變數名和儲存空間的對應的刮泥。

值傳遞——形式引數有自己的儲存空間,值傳遞只是將實參的值賦值給形參,函式體改變形參,不會影響實參。且退出函式時,形參的儲存空間會被銷毀。

引用傳遞——需要在定義形參時,在型別後面加上&。引用傳遞的形參沒有自己的儲存空間,其形參可以看做是實參的別名(綽號)。函式體中修改形參實際就是修改實參。

陣列作為函式引數

陣列名作為函式引數時,形引數組和實參陣列共享儲存單元。修改形引數組實際就是修改實參陣列。原因是*和等價。

函式過載三個充分必要條件

形參的名稱,形參的傳遞方式和函式的返回值都不能作為函式過載的條件。

函式的遞迴呼叫

c通過執行時堆疊支援遞迴函式的實現。遞迴函式就是直接或間接呼叫自身的函式。

遞迴實現某種型別的螺旋狀的while迴圈。white迴圈在迴圈體每次執行時必須取得某種進展,逐步迫近迴圈終止條件。遞迴函式也是如此,它在每次遞迴呼叫後必須越來越接近某種限制條件。當遞迴函式符號這個限制條件,停止遞迴呼叫。

一旦你理解了遞迴,閱讀遞迴函式最容易的方法不是糾纏它的執行過程,而是相信遞迴函式會順利完成它的任務。如果你的每個步驟正確,你的限制條件設定正確,並且每次呼叫時更接近限制條件,遞迴函式總是能正確完成任務。

能用非遞迴方法解決且不是很複雜的問題最好不用遞迴方法解決。

原因:在函式的遞迴呼叫過程中,系統要為每一層呼叫中的變數開闢儲存單元,要記住每一層呼叫後的返回點,要增加許多額外的開銷,因此函式的遞迴呼叫通常會降低程式的執行效率。

後記:如果乙個遞迴函式內部所執行的最後一條語句就是呼叫自身時,這種被稱為尾部遞迴。尾部遞迴很容易改寫為迴圈的形式,它的效率通常更高一些。

函函式的引數傳遞方式數的引數傳遞方式

函式的參函式的引數傳遞方式數傳遞方式

《C和指標》摘錄(一)

以下均為個人看了 c和指標 reek著 人民郵電出版社後將之前不清楚或覺得需要強調的摘抄的 預處理指令 如下均為預處理指令 include include define max cols 20預處理指令 preprocessor directives 由預處理器 preprocessor 解釋,預處...

《C和指標》摘錄(二)

當陣列名作為sizeof操作符的運算元 返回整個陣列的長度,而不是指向陣列的指標的長度int a 10 int c c a 0 等價於 c a 下標引用可以作用於任何的指標,而不僅僅是陣列名 int array 10 a for a 0 a 10 a 與 intarray 10 ap for ap ...

《c和指標》摘錄4 指標

記憶體和位址 計算機的記憶體由數以億計的位 bit 組成,每個位可以容納0或1。由於乙個位能表示的值範圍太有限,所以單獨的用處不大,通常許多位合成一組作為乙個單位,這樣就可以儲存範圍比較大的值。指標變數 專門存放變數的位址的變數 定義指標變數 資料型別 變數名 int a 指標變數必須初始化再使用 ...