在C中何為引數,引數的定義是什麼

時間 2021-07-19 23:20:49

1樓:匿名使用者

引數一般出現在方法裡面。如:public void get(string str,int age).....

在get後面的括號裡,就是形參,引數可以有很多中,具體情況需要結合實際的需求,去定義有效的引數,如果能幫助到樓主,請採納,萬分感謝~~

2樓:匿名使用者

引數是用來傳遞資料的。以下是是本人學習筆記 不同型別的引數傳遞 如果需要傳遞引數,我門可以傳遞字串、整數型、也可以傳遞類的物件。 1。值方式引數傳遞

在程式中不會修改值型別引數的值. 2.引用型別作為引數傳遞,傳遞方式還是值型別,也就是沒有ref。

雖然我沒有用ref方式傳遞,但是引數是引用型別,當應用變數發生變化時,引數發生了變化,所以我門說,

當類作為引數的時候,引數被修改時,可能修類成員的值. 2.引用方式引數傳遞

如果我門將引數作為引用方式傳遞,也就是用ref修飾引數。

ref方式傳遞引用方式傳遞引用型別和引用方式傳遞值型別,都會儲存方法中的修改. 1.值引數的呼叫

在main函式中宣告瞭一個i,這時候在記憶體的堆疊中就會專門為i開闢出一塊新的記憶體空間存放它,接下來執行了這個方法,它會在堆疊中開闢出另一個區域,並把i的值拷貝過來賦給方法中i的值,方法開始操作,導致方法中i的值加1,而main函式i的值未做任何改變,列印i的值,自然還是0.2.引用引數的呼叫在main函式中宣告j = 0;記憶體的堆疊中就會專門為j開闢出一塊空間存放j,這個時候呼叫了方法,方法把j,作為引數傳遞了進去,由於ref關鍵字的存在,使的這一次傳遞的是記憶體中的指標,方法通過這個指標找到引數i在記憶體中的地址而去操縱它。

main函式中的j和引數中的i指向的都是同一記憶體地址,它們的變數是一樣的,所以當方法引數給i加1,直接導致了j的變化。因為指向的都是同一記憶體地址。在呼叫ref以前必須對引數進行初始化,而不是在方法中進行初始化。

3.輸出引數的呼叫在輸出引數中,必須對引數進行初始化。從clr角度看,關鍵字out和ref是等效的,這就是說,無論使用哪個關鍵字,都會生成相同的後設資料和il**。

c#中,將這2個關鍵字區別對待,這兩個關鍵字區別在於哪個方法負責初始化引用物件。如果方法的引數為out,那麼呼叫者不希望在呼叫方法之前初始化物件,被呼叫的方法必須在返回之前為物件賦值。如果方法的引數標記為ref,那麼呼叫者必須在使用方法之前首先初始化引數的值,被呼叫的方法可以讀取引數或為引數賦值。

3樓:匿名使用者

引數是指向方法(函式)傳遞的資料,一般我們方法在行使功能時需要計算和操作不同的資料,這時可以將這些資料通過引數的形式傳遞給方法進行操作。 引數型別:1、值型別引數2、引用型別引數3、輸出型別引數

c#中 引用引數與輸出引數的功能分別是?有什麼區別?分別在什麼時候使用?

4樓:定復

其實不用想的太複雜,簡單點想

引用引數,ref,比如 public int fun(ref int k);這樣的函式,你想在函式體內修改引數k的值,就這樣用,值型別的話就這樣用吧,如果引數是一個物件,就不用這個ref了,其實意思就是傳地址進去,讓你進行操作

而輸出引數,out,就是可以傳入沒有初始化的引數。ref就是必須初始化的

out可以在內部進行初始化,而且一定要初始化,這個要注意就比如你傳入一個沒有初始化的值型別的資料,就可以用out這樣的方法兩個的區別就是,ref要初始化,另一個不用不過兩個都可以在內部修改他的值

具體什麼時候用,ref主要還是對於值型別

out可以處理一個沒有初始化的陣列,這個比較有用你再看看別人說的,總結下吧

5樓:

out(c# 參考)

更新:2007 年 11 月

out 關鍵字會導致引數通過引用來傳遞。這與 ref 關鍵字類似,不同之處在於 ref 要求變數必須在傳遞之前進行初始化。若要使用 out 引數,方法定義和呼叫方法都必須顯式使用 out 關鍵字。

例如:c# 複製**

class outexample

static void main()

}儘管作為 out 引數傳遞的變數不必在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值。

ref 和 out 關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同。因此,如果一個方法採用 ref 引數,而另一個方法採用 out 引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的,因此將不會編譯以下**:

c# 複製**

class cs0663_example

public void samplemethod(ref int i)

}但是,如果一個方法採用 ref 或 out 引數,而另一個方法不採用這兩類引數,則可以進行過載,如下所示:

c# 複製**

class outoverloadexample

public void samplemethod(out int i)

}屬性不是變數,因此不能作為 out 引數傳遞。

6樓:匿名使用者

ref 是針對基本資料型別,而又想傳引用的做法,我感覺主要用於呼叫非託管**時。其他時候不想用它。

out類似,但編譯器會加以限制,例如:檢查到沒有賦值的out不允許編譯通過。

c#中 引用引數與輸出引數的功能分別是?有什麼區別?分別在什麼時候使用?

7樓:秦倫甘卿

out(c#

參考)更新:2023年11

月out

關鍵字會導致引數通過引用來傳遞。這與

ref關鍵字類似,不同之處在於

ref要求變數必須在傳遞之前進行初始化。若要使用out引數,方法定義和呼叫方法都必須顯式使用out關鍵字。例如:

c#複製**

class

outexample

static

void

main()

}儘管作為

out引數傳遞的變數不必在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值。

ref和

out關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同。因此,如果一個方法採用

ref引數,而另一個方法採用

out引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的,因此將不會編譯以下**:

c#複製**

class

cs0663_example

public

void

samplemethod(ref

inti)

}但是,如果一個方法採用

ref或

out引數,而另一個方法不採用這兩類引數,則可以進行過載,如下所示:

c#複製**

class

outoverloadexample

public

void

samplemethod(out

inti)

}屬性不是變數,因此不能作為

out引數傳遞。

8樓:魚同書昝念

其實不用想的太複雜,簡單點想

引用引數,ref,比如

public

intfun(ref

intk);這樣的函式,你想在函式體內修改引數k的值,就這樣用,值型別的話就這樣用吧,如果引數是一個物件,就不用這個ref了,其實意思就是傳地址進去,讓你進行操作

而輸出引數,out,就是可以傳入沒有初始化的引數。ref就是必須初始化的

out可以在內部進行初始化,而且一定要初始化,這個要注意就比如你傳入一個沒有初始化的值型別的資料,就可以用out這樣的方法兩個的區別就是,ref要初始化,另一個不用不過兩個都可以在內部修改他的值

具體什麼時候用,ref主要還是對於值型別

out可以處理一個沒有初始化的陣列,這個比較有用你再看看別人說的,總結下吧

9樓:龍有福沈胭

沒什麼太大區別。。

一個用關鍵字ref標示,一個用out標示。

牽扯到資料是引用型別還是值型別。

一般用這兩個關鍵字你是想呼叫一個函式將某個值型別的資料通過一個函式後進行更改。傳out定義的引數進去的時候這個引數在函式內部必須初始化。否則是不能進行編譯的。ref和out

都是傳遞資料的地址,正因為傳了地址,才能對源資料進行修改。

一般情況下不加ref或者out的時候,傳值型別的資料進去實際上傳進去的是源資料的一個副本,也就是在記憶體中新開闢了一塊空間,這裡面存的值是與源資料相等的,這也就是為什麼在傳值型別資料的時候你如果不用return是無法修改原值的原因。但是你如果用了ref,或者out,這一切問題都解決了,因為他們傳的是地址。

out比起ref來說,還有一個用法就是可以作為多返回值來用,都知道函式只能有一個返回值,c#裡,如果你想讓一個函式有多個返回值,那麼out能很容易解決。

c 中引數的傳遞 是什麼過程

簡單的說吧。引數傳遞 如果是按值傳遞 那麼物件到函式中就要被複製一次。如果是按引用傳遞 那麼只需複製物件的位址即可。對於c 來說。凡是結構 即struct定義的 全都用按值複製 如果在函式中改變那個引數 則實參不會改變。例如change char p 如果在change中p這個引數被改變了。那麼 c...

c中函式引數指什麼?如何給函式的引數賦值

華師 c main函式的四種情況 static void main static int main static void main string args static int main string args 1.主程式main函式一共有以上四種版 2.一個程式中不能有兩個以上的main函式,有...

C中引用引數和輸出引數有什麼不同 他們以什麼方式傳遞

沒什麼太大區別。乙個用關鍵字ref標示,乙個用out標示。牽扯到資料是引用型別還是值型別。一般用這兩個關鍵字你是想呼叫乙個函式將某個值型別的資料通過乙個函式後進行更改。傳out定義的引數進去的時候這個引數在函式內部必須初始化。否則是不能進行編譯的。ref和out 都是傳遞資料的位址,正因為傳了位址,...