跟siki老師學C 第七天

2021-07-09 14:12:55 字數 3865 閱讀 7132

今天我們要學習的內容是函式,也叫做方法。

什麼叫方法?

就是我們為了達到某個目的或者實現某項功能而設定的一系列步驟。

為什麼要使用方法呢?

我們在之前編寫的控制台應用程式都是寫在main()方法中的,在控制台應用程式中,程式的執行是以main()方法為程式入口的,也就是說無論你main()方法寫在**,只要你執行這個程式,程式就要找到main()方法,找到才按main()方法裡面的順序執行,如果找不到main()方法,程式就無法執行,進而報錯。因此我們在建立控制台應用程式的時候vs會自動生成乙個main()方法。

既然有main()方法,那麼就有其他方法,其他方法存在的意義就是把乙個要執行的**段規整化。

比如我要算乙個數跟另乙個數的和,在main()方法中當然可以計算,但是每一次計算我都要寫一次它們計算的語句,那我不如將這些語句寫在另乙個位置,當我要用到這些語句的時候再來把它們拿過去,這些語句脫離了main()方法,就成了其他方法。同時這也是我們使用方法的原因,它簡化了我們的編碼過程,不需要反覆書寫同樣的**。

之前我們用迴圈使得我們避開重複**,但迴圈畢竟是一次性的,我想在任何時候都能執行這段重複的**,迴圈是做不到的,只有方法可以做到。

那麼方法怎麼用呢?

我們先來看看main()方法是怎麼用的:

static

void main(string args)

首先乙個關鍵字static,表示這個方法是靜態的,然後乙個void表示這個方法是沒有返回值的,接著乙個main表示這個方法的名稱是」main」,後面乙個括號,裡面填了內容,說明這個方法是有引數的(暫時這麼理解),最後一對花括號,花括號裡面就是這個方法的方法體。我們的語句就寫在這裡。

接下來我們按照這個格式來自己定義乙個方法:

namespace csharp學習第七課

static

void main(string args)

}}

可以看到我們定義的方法的方法名前面是關鍵字void,表示function()這個方法是沒有返回值的。

什麼叫有沒有返回值呢?意思就是說在執行這個方法過後,這個方法最終要不要把完成的結果給你送回來。

舉個例子,現在我給你一萬五千塊錢,讓你幫我去選購一台mac,怎麼選購是你的事,什麼顏色、螢幕尺寸、硬碟容量也是你決定,你也不用問我很多細節,我讓你去辦了,你最終要抱回來一台mac給我,ok,這叫有返回值!

現在我對你說我這有些東西需要搬運,你去幫我找幾個人來,讓他們直接過來就行了,你不用來了,這你也不用過問很多細節,什麼身高、胖的還是瘦的、哪個學院的等等都是你決定,你只需要找到他們告訴他們來我這就可以了,你不需要再跑回來跟我說:「人找好了,他們是誰誰誰,誰誰誰。」,這就叫沒有返回值,你完成了你的任務就好了,不需要給我最終的結果。

這是返回值的解釋。

可以看到我們定義的方法的方法名後面括號裡沒有填寫任何內容,表示function()這個方法是引數的。

什麼叫有沒有引數呢?

沒有引數意思就是說在執行這個方法的時候,這個方法是不需要額外給定引數的,儘管方法裡面可能需要引數,但是是內部定義、內部使用的。

有引數意思就是說在執行這個方法的時候必須提供這個方法要用到的某些值,否則無法呼叫這個方法為你服務。

舉個例子,現在我給你一萬五千塊錢,讓你幫我去選購一台mac,告訴你我要深灰色的、螢幕尺寸為21.5英吋、硬碟容量為1tb.這裡面的深灰色、21.5英吋、1tb都是我給你提供的引數,你就用這些引數去選購,最終抱回來這樣一台mac,那我如果不跟你說這些引數,而你恰好有需要這些引數,那你就會覺得很為難,說:「你沒告訴我引數,對不起,我給你辦不了。」

同樣的,沒有返回值的方法也一樣,在需要引數的時候也必須提供相應的引數才能呼叫成功。

下我們來看看有返回值的購買mac方法:

static

string bymac(string color,double size,double capacity)

我們看static後面沒有void而是string,表示這個方法有返回值,而且這個返回值是string型別的,後面的括號裡填寫了各種引數。

當方法有返回值的時候,方法體中最重要的就是乙個return。return後面要接上相應型別的返回值,否則編輯器就會報錯。

上面介紹了方法的宣告,接下來看看方法怎麼使用:

沒有引數的方法直接在主方法中寫上方法名,後面加上圓括號,最後以分號結束;

而有引數的方法還要在元括號裡填上相應的引數變數,數量、順序、型別都不能出錯,否則編輯器也會報錯的。

對於有返回值的方法,最好要用相應型別的變數去承接返回值,因為有返回值,這個返回值肯定是你想要用的嘛,你當然要存起來,否則的話要這個方法有什麼用處呢?你幫我買來了一台mac,買來後發現我不要,你也不知道給誰,那你忙活了半天有什麼意義?(可以自己抱回家啊~~)

對於沒有返回值的方法,可能大家會有疑問:既然沒有返回值,那這個方法有什麼意義呢?

ok,你幫我買來一台mac,我不要,你也很負責任,給放到庫房裡去了,等我想用的時候,我可以隨時去取嘛,就是這個道理。你現在只需要執行選購這個過程就好了。同樣,我現在就要這個方法去執行,執行結果我不管,現在我還用不到。

這樣下來我們就要舉四個例子了:

namespace csharp學習第七課

static

string bymac2(string color,double size,double capacity)

static

void bymac3()

static

void bymac4(string color, double size, double capacity)

static

void main(string args)

}}

上面就是有無返回值,有無引數的四個例子。

說到引數還要提到乙個概念就叫做形參和實參。

這是什麼東西呢?

我讓你去買一台mac,我心裡知道我想要什麼規格的,但是我不知道怎麼表達出來,你跟我說,你把顏色跟我說一下,再把螢幕尺寸跟我說下,最後再把硬碟容量跟我說下,這裡提到的顏色,尺寸,容量都是形參,你的意思是你就按照這種形式說一下你的要求。所以叫形式引數。

我把具體的顏色,具體的尺寸,具體的容量告訴你,這就叫實際引數。

static

void bymac4(string color, double size, double capacity)

圓括號裡面都是形參。

bymac4("darkgray", 21.5, 1000);
圓括號裡面都是實參。

我們有的時候會遇到陣列引數,陣列引數就是把乙個陣列作為乙個引數傳遞給乙個方法,然後這個方法對這個陣列進行一系列操作。

既然陣列可以作為乙個引數,那麼陣列也同樣作為乙個返回值。

我們之前就遇到過返回值是乙個陣列的方法:split()方法。

我們來分析一下這個方法,首先這個方法是有返回值的,而且是有引數的,返回值還是乙個字元陣列,那我們可以試著寫一下:

namespace csharp學習第七課

static

void main(string args)

}}

雖然split()方法內部的實現我沒有寫出來,但是split()方法卻是是按照這個流程執行的。

這就是我們說的返回值是乙個陣列的方法。

以上就是我們今天的學習內容,我們來回顧一下:

1.什麼是方法;

2.為什麼要使用方法;

3.方法怎麼用;

4.方法的組成與結構;

5.什麼叫返回值,什麼叫引數;

6.實參與形參的區別和概念;

7.除常見的返回值型別外,還有哪些特殊型別的返回值。

C 學習第七天

c 中的params引數 引數陣列 1 params引數是陣列。呼叫方式可以陣列方式,也可以單個元素方式。static void test string name,params int scores console.writeline 你好,你的scores is name,sb test 劉德華 ...

C語言第七天

今天學習了結構體這個高大上的東西,在與函式結合的時候,我徹底懵了.做作業的時候我老忘記結構體是一種我自己定義的資料型別 老想著用int之類的型別.這樣就容易懵了,下次我一定要注意這些問題.結構體是一種自定義的資料型別 用struct關鍵字宣告乙個結構體 struct point 定義乙個結構體變數 ...

C 基礎第七天

1 ref引數 ref引數側重於將乙個變數以引數的形式帶到乙個方法中進行改變,改變完成後,再講改變後的值帶出來。在使用ref引數的時候需要注意 ref引數在方法外必須為其賦值。2 方法的過載 方法的過載指的是方法的名稱相同,但是引數不同。引數不同 1 如果引數的個數相同,那麼引數的型別就不能相同。2...