初學筆記(C 方法的引數傳遞)

2022-08-24 09:00:15 字數 1926 閱讀 7076

在宣告方法時,所定義的引數是形式引數(簡稱形參),這些引數的值由呼叫方負責為其傳遞,呼叫方傳遞的是實際資料,成為實際引數(簡稱實參),在呼叫方法時,,必須嚴格按照方法所定義的引數型別和順序指定實參。方法的引數傳遞按性質分為按值傳遞和按引用傳遞。

1.安值傳參

按值傳遞時,把實參變數的值賦給相應的行參變數,即被呼叫的方法接受的只是實參的資料值。當方法內部更改了形引數據時,不會影響到是參變數的值,即實參和形參變數是兩個不相同的變數,它們具有各自的記憶體位址和資料值。故實參傳遞給形參是乙個單向值傳遞。值型別的引數在傳遞時預設為按值傳參。string和object雖是引用型資料,但從表現形式來看,其具有按值傳參的效果。

2.按引用傳參

方法只要能返回乙個值,在實際中,常常需要方法能夠返回多個值或修改傳入的引數值並返回,此時只用return語句是無法做到的,這是可以使用按引用傳參來實現。

在傳遞引用引數時,呼叫方將把實參的引用傳遞給相應的形參。實參的引用代表了資料的記憶體位址,因此,形參和實參指向同乙個引用。如果在方法內部更改形參所引用的資料值,那麼同時修改了實參所引用的資料值。當值型別和string型別引數要按引用方式傳遞時,通過ref關鍵字宣告引用引數,無論是實參還是形參,要按引用傳參,就必須新增關鍵字ref。

3.輸出引數

方法中的return只能返回乙個值,引用引數可以返回多個值,但在用ref修飾的引數在傳遞前必須先初始化。但有時引數在傳遞之前並不確定,其值應在方法呼叫結束後返回,這時可以使用使用輸出引數,它不需要對實參初始化,輸出引數專用於方法中的資料通過形參返回給實參,但不會將實參的值傳遞給形參。乙個方法中可以有多個輸出引數。

在c#中,通過out關鍵字來宣告引數,無論是實參還是形參,只要是輸出引數,就必須新增out關鍵字。

用ref和out修飾的引數都是引用型別傳參形式,在方法內部的修改和賦值都會被保留在實參中,但它們在使用時有一定的區別。

(1)用ref修飾的引數,在方法傳參之前必須對實參賦值。

(2)用out修飾的引數,在方法傳參之前不必初始化,但在方法中必須賦值後才能使用,並且在方法結束前,必須對該引數賦值。

4.引用型別的引數傳遞

引用型別的引數傳遞是按引用傳遞的,所以引用型別的引數傳遞時不需ref和out關鍵字(string除外),引用型別引數的傳遞,實際上是將實參資料的引用複製到形參。所以形參和實參共同指向同一記憶體區域。

5.陣列型引數

陣列也是引用型別資料,把陣列作為引數傳遞時,,也是引用傳遞。但陣列作為引數作為引數,有兩種形式:一種是在形引數組前加params修飾,另一種是不加params關鍵字。不加params修飾符時,所對應的實參必須是乙個陣列名;新增params修飾符時所對應的實參可以是陣列名,也可以是陣列元素值的列表,此時系統將自動把元素組織到乙個陣列中。不論哪種,形引數組都不能定義陣列的長短。

在使用params修飾符時,要注意以下幾點:

(1)params可以修飾任意型別的引數。

(2)params只能修飾一維陣列。

(3)不能僅基於params關鍵字來過載方法。

(4)不能對params陣列使用ref和out關鍵字。

(5)params陣列只能在最後乙個引數(即每個方法只能有乙個params陣列)。

6.方法的過載

在這簡單介紹一下方法的過載。重要介紹方法過載的特點:

(1)過載方法的名稱必須相同。

(2)重咋方法的引數個數或型別必須不同。

在呼叫具有過載的方法時,系統會根據引數的個數或型別來確定最匹配的方法呼叫。

C 方法引數傳遞 值傳遞

c 常用的引數傳遞有兩種方式 值傳遞和引用傳遞。什麼是值傳遞呢?就是把引數值放在方法中,在方法中對引數值做了修改,但是在方法呼叫之後,引數值還是原來的值。值傳遞好比把檔案複製乙份,通過網路傳給別人,然後他可以在他的計算機上對檔案做各種修改,修改會儲存下來,但是你的計算機上的檔案不會發生任何變化。值傳...

C 方法引數傳遞 值傳遞

c 常用的引數傳遞有兩種方式 值傳遞和引用傳遞。什麼是值傳遞呢?就是把引數值放在方法中,在方法中對引數值做了修改,但是在方法呼叫之後,引數值還是原來的值。值傳遞好比把檔案複製乙份,通過網路傳給別人,然後他可以在他的計算機上對檔案做各種修改,修改會儲存下來,但是你的計算機上的檔案不會發生任何變化。值傳...

C 中方法引數的傳遞

我們知道,使用引數傳遞給方法有兩種傳遞方式,一種是引用傳遞,另一種則是值傳遞。變數在通過引用方式傳遞給方法時,傳遞給方法的就是這個變數,因此在被呼叫的方法內部對該變數內容進行修改,方法退出後修改的變數值依然有效。而變數通過值傳遞給方法時,傳遞的就是該變數的乙個副本,在方法內部對其修改當方法退出後該變...