標準C學習day08 函式 遞迴和遞推

2021-09-22 08:09:09 字數 2427 閱讀 2655

陣列也可以作為形式引數使用

陣列形式引數不在被呼叫函式裡

真正的形式引數不是陣列,而是乙個可以

作為陣列使用的變數

陣列形式引數裡的儲存區在函式呼叫開始

之前就已經存在了,函式呼叫結束後

也依然存在

宣告陣列形式引數的時候可以省略陣列裡

的儲存區個數

使用陣列形式引數的時候需要另外提供乙個

整數型別的形式引數表示陣列裡的

儲存區個數

使用陣列形式引數可以實現雙向資料傳遞,

這種引數叫做輸入輸出引數

如果被呼叫函式寫在下面編譯器會猜測它的

格式編譯器認為函式有乙個整數型別的返回值

並且有任意多個不確定型別的形式引數

引數只能是整數型別或雙精度浮點型別

這個猜測結果叫做函式的隱式宣告

如果隱式宣告和函式的真實格式不一致編譯

就會出錯

函式大括號前面的部分可以單獨寫成一條

語句,這種語句叫做函式宣告語句

函式宣告語句裡可以省略形式引數名稱

把函式宣告語句寫在檔案開頭叫函式的顯式

宣告,這可以避免隱式宣告

除了主函式以外的所有函式都應該進行

顯式宣告

exit標準函式可以立刻結束程式的執行

為了使用這個標準函式需要包含stdlib.h

標頭檔案這個函式需要乙個整數型別的引數,這個

引數的作用和主函式返回值的作用類似

c語言裡函式可以呼叫自己

這種函式叫遞迴函式

...

1 print()

*** ************

1 print()

*** ****************

1 print()

*** ********************

print()

*************************

如果乙個問題可以採用一種方法不停的分解

並且分解後的問題一定比原來的問題

簡單就可以採用遞迴函式解決

遞迴函式編寫步驟

1.編寫語句解決分解後的每個小問題

(假設遞迴函式已經可以使用)

2.在遞迴呼叫語句之前編寫分支解決

不可分解的情況(分支必須保證

函式可以結束)

用迴圈解決問題的方法叫遞推

用遞迴函式解決問題的方法遞迴

首先用最簡單的引數測試遞迴函式的結果,

然後把引數逐漸變得複雜繼續測試.

用這種方法可以搞清楚遞迴函式的實際執行

效果變數分為區域性變數和全域性變數

區域性變數都宣告在函式裡面

全域性變數宣告在所有函式外邊

不論區域性變數還是全域性變數都分為靜態和

非靜態兩種

宣告靜態變數的時候需要使用static關鍵字

變數

區域性變數 全域性變數

靜態 非靜態 靜態 非靜態

不同種類變數的使用範圍不同

作用域是一種使用範圍,它表示可以使用

某個變數的所有語句

生命週期也是一種使用範圍,它表示可以使用

某個儲存區的所有時間

非靜態區域性變數的作用域是函式內部的

所有語句

非靜態區域性變數的生命週期是函式某一次

執行的時間範圍

在函式開始執行的時候計算機會為非靜態

區域性變數分配儲存區,在函式結束的

時候計算機會把非靜態區域性變數的

儲存區收走

每當函式重新執行時非靜態區域性變數對應

的儲存區都會發生變化

只要函式結束後記錄在非靜態區域性變數裡

的數字就找不到了

靜態區域性變數的作用域也是函式裡面的

所有語句

靜態區域性變數的生命週期是整個程式的

執行時間

記錄在靜態區域性變數裡的數字只要程式

沒結束就一定可以找到

非靜態全域性變數的作用域包含程式裡

的所有語句

非靜態全域性變數的生命週期是整個程式

的執行時間

靜態全域性變數的作用域只包含宣告它的

那個檔案裡的所有語句

靜態全域性變數的生命週期也是整個程式

的執行時間

非靜態區域性變數類似於別墅裡的家具

靜態區域性變數類似於別墅下面的土地

靜態全域性變數類似於小區裡的道路

非靜態全域性變數類似於小區外的道路

靜態變數和全域性變數的初始化都是在程式

開始的時候進行並且只做一次

如果靜態變數或全域性變數沒有初始化就會

自動被初始化成0

全域性變數和區域性變數可以重名,這個變數

名稱優先代表區域性變數

如果區域性變數和全域性變數都能滿足要求

應該優先選擇區域性變數

C 學習筆記day08 標準C語言

多函式程式 1 乙個程式可以由包含main函式在內的多個函式組成。函式的執行過程有嚴格的時間順序,乙個程式同一時間不能執行兩個程式。所有函式在執行時間上是連續的。被呼叫函式在執行完畢之後,要返回到呼叫函式繼續執行。2 不可以跨函式使用變數 變數的生命週期 3 被呼叫函式的返回值。乙個被呼叫函式,是可...

C 學習筆記day08

1 排序函式 void order int p1,int p2 sort ia 9,sizeof int orderint for int i 0 i 9 i coutpers 0 id 1 pers 0 age 29 strcpy pers 0 name liucy pers 1 id 2 per...

學習筆記day08

單例設計模式 上圖中,想要實現a,b的配置資訊共享,因為a,b是兩個new,所以必然是不同的物件,一種方法就是將其配置資訊全部設成靜態,但資訊很多時會導致儲存資訊過多。單例設計模式流程 1,主函式main進棧,定義s1 2,等號右邊,single載入進入方法區,接著是single的建構函式。s和ge...