C語言的學習筆記2 函式

2021-06-29 12:15:25 字數 2217 閱讀 5049

如果把所有**全部放在main函式裡面,太擁擠了,不容易讀懂理解**,也不利於團隊開發,所有除了main函式以外,我們需要編寫其它函式來輔助main函式。

一.函式的定義格式

返回值型別 函式名(形參)

函式名:函式叫什麼,屬於標示符,要遵守標示符規則。

函式體:函式需要實現什麼呢,什麼功能呢。

形式引數:定義函式時函式名後面括號裡面的引數,簡稱形參。接收其它函式的實參。

二.函式的呼叫

1.函式的呼叫就是需要實現某個功能,通過傳遞引數或者無引數傳遞呼叫函式使用其它函式的功能。下面函式就是在main函式裡面呼叫hello函式實現功能。

#includevoid hello(); 

int main()

void hello()

2.函式的呼叫有時需要傳遞引數,被呼叫函式後面的引數叫形參,呼叫函式時傳入引數叫實參。

3.注意:

(1)實參個數必須等於形參個數,實參和形參要一一對應,型別也要一樣

(2)被呼叫函式裡面不能定義和形參一樣的變數,因為作用域一樣,會起衝突。

(3)傳遞的引數是基本型別,像整型,字元型,浮點型。純碎是值傳遞,形參的改變不會影響到實參。

(4)函式可以沒有引數,也可以有無限個引數。

三.函式的返回值

1.return的作用,第一是退出函式的標準,第二是如果函式返回值型別不為空,會返回乙個具體值給這個其它函式裡面的呼叫的這個函式

2.注意:

(1)void代表沒有返回值,return可以不寫或者寫return;不返回任何值

(2)return在函式裡面可以多次出現,提前退出函式。

(3)不寫返回值型別,預設是返回int型別

(4)就算明確寫了返回值型別,也可以不返回任何值,為了程式的可讀性,應該寫上。

(5)預設情況下,c語言不允許兩個函式名一樣。

四.函式的定義步驟

1.根據函式的作用,起乙個合適的名字,讓別人看見這個函式名就知道函式要實現什麼功能。

2.確定函式需要接收幾個引數,

3.看函式需不需要返回值。

五.函式的注意

1.函式名不允許一樣,即使他們乙個有引數傳遞,乙個沒引數傳遞

2.函式不能巢狀定義,就算說乙個函式裡面不能再定義其它函式

3.函式不能重複定義,也就是函式名不能重複。但是可以有無數個函式宣告,c語言不報錯

4.如果有函式的宣告,沒有函式的定義。可以通過編譯,因為編譯器只會檢測語法合不合理,並不檢測函式有沒有定義。但是鏈結時會報錯,因為鏈結的時候會檢測是否定義了函式。

5.函式的宣告可以在main函式裡面也可以在main函式外面。函式的宣告可以省略形參,只需要其它函式知道有你這個函式而已。

6.main函式返回值0表示正常退出,返回1表示異常退出。對程式本身沒有影響

7.printf也是函式,也有返回值,返回值型別是int,返回的是字串的位元組數。

六..h檔案和.c檔案

由於把所有**都寫在乙個檔案裡,不利用閱讀和除錯。多個人修改同一檔案會出現問題,一般完成乙個專案需要多人合作,這樣不利用團隊合作。一般在團隊開發中,乙個人寫main函式,其他人寫功能函式,除寫main函式以為的人,其他人要為自己的功能函式建立乙個.h檔案和.c檔案,.c檔案寫函式的定義,.h檔案寫.c檔案內每個函式的宣告。寫main函式的人只需要將.h檔案拷貝到自己檔案裡面就可以了。這樣就可以實現多人開發。編譯的時候main的.c檔案和其他函式的.c檔案各自編譯,鏈結的時候把所有相關聯的.o檔案和c語言函式庫合併在一起,生成可執行檔案。

七.include

1.作用:拷貝右邊檔案的所有內容到#include所在的位置

2.自定義的檔案用「」括起來,系統自帶檔案用<>括起來

3.用printf和scanf函式的時候,必須要再main函式前面加上#include .就是為了把2個函式的宣告拷過來。

C語言學習筆記(2) 呼叫函式

1.1 函式呼叫的一般形式有三種 1 函式呼叫語句,如 printf star 2 函式表示式。3 函式引數。1.2函式呼叫的過程。1 未進行函式呼叫時,形參不占用儲存單元。2 將實參的值傳遞給形參。3 執行呼叫函式期間,形參已經被賦予了值。4 通過return語句將函式值帶回到主函式。5 呼叫過程...

c語言學習筆記18之函式2

無參函式 通常用來執行一些功能比較固定單一的語句。例如 getcharar 有參函式 通常通過處理傳遞過來的引數,將函式值返回給呼叫處。如 sqrt 4 pow 2,3 strlen hello 可以將函式比喻成乙個工具,例如我們要割草,此時就需要一把鐮刀,它的功能就是割草。所以要先知道有鐮刀這個東...

C語言的指標學習筆記 2

1.陣列的關鍵符號的理解 例如 int a 100 a 一是陣列名,二是陣列首元素首位址 等價於 a 0 a 0 陣列的第乙個元素。a 0 陣列首元素首位址。a 陣列首位址。注 雖然a與 a的值相等,但是含義完全不同。2.用指標訪問陣列 int a 100 0 int p a 定義指標,並指向陣列a...