9 函式介紹

2021-07-03 19:29:12 字數 2574 閱讀 9919

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

陣列作為形式引數使用時真正的形式引數不是陣列,而是

乙個單一的變數。這個變數可以當作陣列使用。

和陣列形式引數對應實際引數可以是陣列名稱

宣告陣列形式引數的時候不需要寫儲存區個數

通常為陣列形參提供另外乙個形式引數用來表示陣列中

儲存區的個數

陣列形參中所包含的儲存區在兩個函式之間共用,任何

乙個函式對這些儲存區的修改可以被另外乙個函式

看到普通變數做形式引數只能把資料從呼叫函式傳遞給被

呼叫函式,所以叫做輸入引數

陣列做形式引數既可以把資料從呼叫函式傳遞給被呼叫

函式,也可以把資料從被呼叫函式傳遞給呼叫函式,

這種引數叫輸入輸出引數

函式由兩部分構成,大括號裡的叫函式體,大括號前面

的叫函式宣告

函式宣告可以單獨構成一條語句,這個時候可以省略

形式引數的名稱

如果編譯器編譯是首先遇到函式呼叫語句則會猜測函式的

格式(猜測結果認為函式有乙個整數型別返回值儲存區

並且可以接受任意多個任意型別的形式引數),這個

過程叫函式的隱式宣告。

隱式宣告不可靠,因為函式的實際格式可能和猜測的格式

不一致。

應該把檔案中所有函式的宣告單獨寫成一條語句放在檔案

開頭(主函式例外),這個方法叫函式的顯示宣告。

這可以避免函式隱式宣告的發生。

會呼叫自己的函式叫遞迴函式

如果乙個問題本身很複雜無法直接找到答案,但是它可以

被分解成幾個小問題,至少有乙個小問題和原來的

大問題在本質上是一樣的只不過簡單一點。這種

問題就適合採用遞迴方法來解決。

編寫遞迴函式的過程

1.用語句描述出問題的分解方式(這時要假設遞迴

函式已經完成了)

2.在遞迴函式的開頭寫乙個分支把不可分解的情況

處理掉(這個分支必須能讓函式結束)

大多數使用遞迴可以解決的問題都可以採用迴圈解決

使用遞迴函式解決問題的思路叫遞迴

使用迴圈解決類似問題的思路叫遞推

變數的生命週期決定了變數在什麼時間範圍內可以使用

變數的作用域決定了哪些語句可以使用這個變數

如果它們之間產生矛盾則生命週期起決定作用

生命週期和作用域都是由儲存區的主人決定的

宣告在所有函式之外的變數叫全域性變數,它們的主人

是整個程式的一次執行過程

全域性變數的生命週期是整個程式某一次執行期間

全域性變數的作用域包含程式中所有語句

沒有初始化的全域性變數自動被初始化成0

宣告在某個函式內部的變數叫區域性變數,它們的主人

是函式的某一次執行過程

這種變數的生命週期是函式某一次執行的時間範圍

這種變數的作用域是函式內部的所有語句

函式內部的大括號叫做語句塊

語句塊內部宣告的變數叫塊變數

塊變數的生命週期是語句塊一次執行過程的時間範圍

塊變數的作用域是語句塊內部的所有語句

主人不同的變數可以重名

全域性變數,區域性變數和塊變數可以互相重名

如果一條語句屬於多個重名變數的作用域則它選擇使用

作用域最小的那個變數

程式在執行的時候它的相關資料是分段落儲存的

**段          儲存程式語句轉換得到的數字

在程式執行的時候這個段落裡的

內容不可以被修改

全域性段          生命週期是整個程式執行期間的

儲存區都被包含在這個段落裡

在整個程式允許期間這個段落

裡所包含的儲存區個數不會改變

棧              所有區域性變數,塊變數,形式

引數和返回值的儲存區都被包含

在這個段落裡

這個段落中所包含的儲存區個數

隨著程式的執行不斷改變

這個段落中對儲存區的管理遵守

後進先出的原則

每個函式開始工作的時候計算機會

為它開闢乙個私有的區域

當乙個函式結束工作的時候計算機

會把分配給它的區域**

堆              動態分配的儲存區都被包含在這個

段落裡堆的大小幾乎可以認為是無限的

動態分配儲存區的生命週期由程式設計師

決定當程式不再使用動態分配儲存區的

時候必須明確把他們還給計算機

在宣告變數的時候可以使用如下幾個關鍵字

1.auto關鍵字用來宣告自動變數

所有區域性變數都是自動變數,不需要特別

說明2.static關鍵字用來宣告靜態變數

靜態變數的生命週期一定是整個程式執行

期間沒有初始化的靜態變數也會自動被初始化

成0不論靜態變數的初始化語句寫在什麼地方

它的初始化工作只在程式開始的時候執行

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

檔案中所有語句

預習:1.宣告變數時的關鍵字

2.指標變數

作業:1.編寫函式把乙個陣列中所有儲存區的內容前後

顛倒,在主函式中把顛倒後的結果列印在螢幕上

(多種型別的陣列都可以完成這個任務,

盡量多試幾種型別)

OGC標準介紹 9

概述 kml opengis kml encoding standard 從2.2.0版本開始由google提交到ogc並被接受為標準,當前ogc kml的版本也就是2.2.0。kml和gml在名稱上類似,但是功能有很大不同。gml主要用於地理資料的交換 而kml主要用於地理資料的視覺化,它不僅包括...

OGC標準介紹 9

概述 kml opengis kml encoding standard 從2.2.0版本開始由google提交到ogc並被接受為標準,當前ogc kml的版本也就是2.2.0。kml和gml在名稱上類似,但是功能有很大不同。gml主要用於地理資料的交換 而kml主要用於地理資料的視覺化,它不僅包括...

9 函式 遞迴函式

n 10 while true n int n 2 print n if n 0 break 結果 遞迴出口 cacl n cacl 10 結果 val 結果 188 1 94.0 2 47.0 3 23.5 4 11.75 5 11.75 堆疊掃盲 data 1,3,6,7,9,12,14,16,...