在真正的程式設計工作中,我們需要完成的**將非常大,所以將**合理的分為不同的區塊是很有必要的,每乙個區塊具有相對獨立的功能,並為其它程式提供對外呼叫的引數和返回值,這樣由多個區域組成的程式才會讓程式閱讀者更方便的理解程式設計的理念。
並可以通過函式讓功能被封裝起來,使得乙個功能可以在不同的情況下被其它功能呼叫,函式的概念就是這樣產生的。
打個簡單比方,比如說你要排序,要對四個陣列進行排序,你可能要寫四遍一堆類似的**。
但是如果有函式,則可以把這些**寫成乙個函式,每次傳乙個陣列做引數即可。
比如下圖的**中的djudeg函式
如果你每次要比較兩個數大小直接傳引數就行,而不需要多餘累贅的重複寫了,還有就是運用函式可以使你的**更加清晰,每個函式既代表了乙個功能,提高了**的可讀性。
函式的名字也很重要,合理的命名可以讓人一眼看出函式的作用,請不要出現如下情況:
1這種命名,關於函式或者變數的命名,建議你們去看這篇部落格:轉移鏈結void
aaa()25
void
abcd()
6
好了,繼續講函式。
首先我們講函式的定義,定義乙個函式要確定三個部分:
1.函式的返回值型別
2.函式的名稱
3.函式的引數
上面截圖就是乙個名叫displayarray的函式,返回值是空,引數依次是乙個陣列a,陣列長度length。
void displayarray(int a,int返回值為空的函式,可以不寫return,但是其他型別的函式必須返回與其型別相同的值,比如這樣length)
int add(int a,int函式定義完了,我們要學會去呼叫他們。b)
如果函式的定義是在呼叫函式的後面(下面)則需要在呼叫之前宣告函式的定義,否則不需要事先宣告。
宣告的意思是告訴編譯器,這個函式的返回值型別、函式名和引數。
#include int wrongplus(int a,int b);//這個程式最終輸出2+3=7,可見在函式內部,a,b的值改變了但是在函式外部其實際的值並沒有改變,我們只不過是把,2,3這兩個值給了形參罷了,實參是不會改變的。函式的宣告部分
intmain()
int wrongplus(int a, int b)//
函式本體
當我們呼叫函式時,對其傳入的引數和函式體內接收到的引數其實並不是同乙個變數。
呼叫函式時向函式傳入的引數稱作實際引數,簡稱實參,而函式體內部用於接收外部呼叫時傳入的引數的引數稱為形式引數,簡稱形參。
例如上面例子中,在main函式中定義的變數int a和int b,在呼叫wrongplus(a, b);時這兩變數是實參,也就是將這兩個變數的值2和3傳入到函式內部。
而在函式wrongplus()的函式體內,用於接收這兩個引數時的int a和int b則是形參,這是函式體內部額外的兩個變數,用於接收2和3這兩個值,這兩個變數並不是main函式中定義的a和b 。
在wrongplus()函式體內,對形參做a ++ ;和b ++;操作,其實只影響到了函式體內部的這兩個變數,而並未影響到main函式中的變數a和b的值。
所以,在wrongplus()函式體內的a和b的值為3和4,函式執行結果的返回值為7,而在main函式中的a和b兩變數的值仍然是2和3,所以printf()函式顯示出的結果則是 2 + 3 = 7 。
到此為止,因為困了,,不想寫了,下次隨緣加內容把,,
析構函式的用法 簡單理論講解
析構函式是 反向 的建構函式。它們在物件被撤消 時呼叫。析構函式的名 稱除了最前面的 符號外,與類的名稱相同。例如,類string的析構函式是 string 析構函式通常用於當乙個物件不再需要時,完成 消除 功能。在函式中建立物件之後,這個物件作為區域性物件開始生存,直到函式執行到遇見右括號 才結束...
棧的簡單講解
棧stack的特徵 後進先出 c 佇列queue類成員函式如下 push 向棧內壓入乙個成員 pop 從棧頂彈出乙個成員 empty 如果棧為空返回true,否則返回false top 返回棧頂,但不刪除成員 size 返回棧內元素的大小 可以把棧想象成乙個木桶,後放進去的東西先拿出來 下面舉個栗子...
php遞迴函式及簡單例項講解
遞迴函式即自呼叫函式,在函式體內部直接或者間接的自己呼叫自己,即函式的巢狀呼叫是函式本身。通常在此型別的函式提之中會附加乙個條件判斷敘述,以判斷是否需要執行遞迴呼叫,並且在特定的條件下終止函式的遞迴呼叫動作,把目前流程的主控權交回到上一層函式來執行。以此,當某個執行遞迴呼叫的函式沒有附加條件判斷敘述...