CLR via C 陣列 陣列的傳遞和返回

2021-10-07 02:50:50 字數 541 閱讀 8666

陣列作為實參傳給方法時,實際傳遞的是對該陣列的引用。因此,被呼叫的方法能修改陣列中的元素。如果不想被修改,必須生成陣列的拷貝並將拷貝傳給方法。注意,array.copy方法執行的是淺拷貝。換言之,如果陣列元素是引用型別,新陣列將引用先有的物件。

類似的,有的方法會返回陣列的引用。如果方法構造並初始化陣列,返回陣列引用是沒有問題的。但假如方法返回的是對字段所維護的乙個內部陣列的引用,就必須決定是否想讓該方法的呼叫者直接訪問這個陣列及其元素。如果是,就可以返回陣列引用。但更常見的情況是,你並不希望方法的呼叫者獲得這個訪問許可權。所以,方法應構造乙個新陣列,並呼叫 array.copy 返回對新陣列的引用。再次提醒,array.copy 執行的是對原始陣列的淺拷貝。

如果定義返回陣列引用的方法,而且陣列中不包含元素,那麼這個方法既可以返回null,也可以返回對包含零個元素的乙個陣列的引用。實現這種方法時,microsoft強烈建議讓它返回後者,因為這樣能簡化呼叫該方法時需要寫的**(因為不需要執行null值檢測)。

對字段也應如此。如果型別中有乙個欄位時陣列引用,應考慮讓這個字段始終引用陣列,即使陣列中不包含任何元素。

陣列的引用傳遞

還是線上乙個例子 public class arraytest3 fun array for int index array public static void fun int arr 結果 6 3 5這個程式本身沒有太大意義,但是呢主要是用來理解堆疊內存在陣列中使用以及分配,下面我們分析一下。在...

多維陣列的傳遞

includeusing namespace std void test int arr 10 int row size arr 一定要加括號 表示指向陣列的指標 傳遞給函式的陣列的處理有三種 風格的字串以空字元null作為結束的標記 2.傳遞指向陣列第乙個和最後乙個元素的的下乙個位置的指標 voi...

Golang陣列的傳遞

陣列與切片 陣列是具有相同唯一型別的一組已編號且長度固定的資料項序列。陣列長度最大為2gb,它是值型別。切片是對陣列乙個連續片段的引用,所以切片是乙個引用型別。按值傳遞和按引用傳遞 go語言中函式的引數有兩種傳遞方式,按值傳遞和按引用傳遞。go預設使用按值傳遞來傳遞引數,也就是傳遞引數的副本。在函式...