在C中,方法的返回值和輸出型引數有什麼區別

時間 2021-09-08 16:34:34

1樓:幸巴達

返回值只有一個,固定的型別。

輸出引數可以有多個,每個可以是不同型別, 只要加上out關鍵字就可以了

2樓:匿名使用者

輸出引數可以需要修改多個值型別引數的情景.比如:

int a=0;

int b,c,d;

如果我們想在一個方法內修改a,b,c,d的值怎麼辦呢?注意返回值是隻有一個的.

比如這個方法名為somemethod,我們可以這樣設定方法:

public int somemethod(out int b, out int c, out int d)

呼叫這個方法:a=somemethod(out b, out c, out d)

注意:輸出引數只用於值型別(int, boolean, char等), 引用型別是不需要輸出型引數的

3樓:士靖輝

public string getstr(int a,out string b,out int c)

4樓:

最主要的還是返回的個數,out可根據實際需要改變許多型別的值,而return就只能是一個

無返回值 和 有返回值 在j**a程式設計中 起到什麼作用

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

5樓:

沒什麼太大區別。。

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

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

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

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

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

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

6樓:匿名使用者

引用引數以ref為關鍵字,這種引數是要在呼叫之前就初始化的。這引數一般情況下是從外部向內部傳遞數值的時候使用,對於託管**加ref和不加基本相同,但是對於託管**就有所區別。

輸出引數以out為關鍵字,這種引數不需要輸入確定的值,實際的物件是在方法內部初始化,由方法內部給這種引數賦值。一般是呼叫該方法之後,需要方法輸出一些資料的時候使用。因為有時候方法的返回值可能用作他用,而這時還想讓方法輸出其他的資料,就可以使用out引數了。

7樓:

引用引數:以關鍵字ref定義,採用引用傳遞

輸出型引數:以關鍵字out定義,採用引用傳遞,其實參可以不進行初始化

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

8樓:定復

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

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

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

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

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

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

9樓:

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 引數傳遞。

10樓:匿名使用者

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

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

j**a語言中 有返回值的方法和無返回值的方法有什麼區別啊 請舉例子說明!!

11樓:匿名使用者

一、主體不同

1、有返回值的方法:具有返回數值的函式。

2、無返回值方法:返回空型別的函式。

二、語法不同

1、有返回值的方法:返回型別 名字(形式參數列列)。

2、無返回值方法:名字(形式參數列列)。

三、呼叫方式不同

1、有返回值的方法:引數=名字(實際參數列列);

2、無返回值方法:名字(實際參數列列)。

12樓:

這樣解釋吧!

有返回值的就是:我問你叫什麼,你回答了我。你的回答就是返回。

無返回值的就是:我指著一輛汽車告訴你說,這叫汽車。你可以不理我,我也不知道你懂不懂。

從上述兩種情況看。為了減小溝通的障礙,我們的程式在絕大部分情況下,都應該要有返回值的。

希望你能理解。

13樓:旁夏侯山

public int getsum()

//有返回值該方法就無void

public void getsum()

//無返回值就必須void

兩個方法作用是一樣的 不同的是一個返回一個型別值int 一個有void無須返回

14樓:

一個是你用我,就要我回報你點東西(有返回值)

一個是你用我,無須回報(void 無返回值)

15樓:匿名使用者

你可以先這樣理解,有返回值的方法就是要這個方法執行的結果,沒有返回值的就是不要這個結果。

16樓:匿名使用者

你明白了就很容易

你不明白就算解釋給你也不明白

返回值和函式值的問題,C 函式返回值問題

函式值跟返回值本來就是一回事。乙個函式只能返回乙個值,這個值是通過renturn 語句返回給main 函式的。函式前面的int就是定義的返回值型別。也就是這個被調函式工作完了,要給main函式乙個值,這個值的型別是int,如果你的int換成是float,char 以及其他任意資料型別,那麼retur...

java中方法能同時返回值麼,JAVA中一個方法能同時返回2個值麼

你直接放map裡返回,設好對應的鍵值對,其實就是封裝拆封,很好理解。 不能同時返回兩個值,你可以將要返回的值放入物件中,或者把變數當引數傳入函式,在函式中改變物件的值。返回物件是用的比較多的方法 不能單獨返回兩個值,只能有一個return,可以用一個 聯接起來,傳過去,再去servlet裡面分割。或...

C 程式設計中返回值問題,c 獲得外部程式返回值的問題

如果函式有返回值,則需要返回語句return。return語句的一般形式是 return 表示式 執行時,先計算出括號中表示式的值,再將該值返回給主調函式中的呼叫表示式。下面對return語句做一些說明 1 函式的返回值是通過函式中的 return 語句獲得的。return 語句將被呼叫函式中的一個...