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

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

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 中返回引用和返回值的區別,C 引用返回值 與 返回指標

通常的返回機制將返回值複製到臨時儲存區域中,隨後呼叫程式將訪問該區域.返回引用則程式則呼叫程式將直接訪問返回值.通常引用將指向傳遞給函式的引用,因此呼叫函式實際上是直接訪問自己的一個變數.比如const int fun int a,const int b int x 1,y 2,z z fun x,...

C 關於返回值的問題,C 關於返回值的問題

你應該換一個高階一些的 ide 你這樣寫會報錯的 你a函式定義了返回型別為int 而你函式裡的return 後面沒有寫返回值 應該寫return 返回值 我不知道你取什麼結果 return 後面寫什麼你自己考慮吧 這個函式功能上不需要返回值也可以,因為函式體中已經輸出了資料。但函式定義為int型,且...

在c語言中主函式是不是必須要有返回值

main 函式的返回值型別必須是 int 這樣返回值才能傳遞給程式的啟用者 如作業系統 如果 main 函式的最後沒有寫 return 語句的話,c99 規定編譯器要自動在生成的目標檔案中 如 exe 檔案 加入return 0 表示程式正常退出。在c語言標準中強制要求main函式的返回值型別為in...