第十章 使用陣列

2022-04-07 09:02:44 字數 1782 閱讀 6414

陣列是無序的元素序列。陣列中的所有元素都具有相同的型別。(引用型別)

宣告陣列變數

int pins;

陣列元素並非只能使用基本資料型別。陣列元素還可以是結構、列舉或者類,例如,為建立由date結構的陣列。

date dates;

建立陣列例項

無論元素是什麼型別,陣列始終都是引用型別。

宣告陣列變數時不需要指定大小,也不會分配記憶體(只是將引用儲存到棧上)。建立陣列例項時才分配記憶體,陣列大小也在這時指定。

pins = new int[4];

由於陣列例項的記憶體是動態分配的,所以陣列例項的大小不一定是常量;而是可以在執行時計算,例如

ine size = int.parse(console.readline());

int pins = new int[size];

甚至可以建立大小為0的陣列。這雖然聽起來有點奇怪,但又是陣列大小需要動態決定,而且可以為0,所以這個設計是有意義的。大小為0的陣列不是null陣列,而是包含0個元素的陣列。

填充和使用陣列

建立陣列例項時,所有元素都被初始化為預設值。(如數值初始化為0,物件為null,datetime為「01/01/000100:00:00」)

int pins = new int[4] ;

大括號中的值的數量必須和要建立的陣列例項的大小完全匹配

初始化陣列變數時可以省略new表示式和陣列大小。編譯器將根據初始值的數量來計算大小,並生成**來建立陣列。

int pins = ;

建立由結構或物件構成的陣列時,可以呼叫構造器來初始化陣列中的每個元素,例如

time schedule = ;

建立隱式型別的陣列

如果在宣告陣列時指定了初始值列表,就可以讓c#編譯器自己推斷陣列元素的型別。

var names = new

使用這個語法,必須保證所有初始值都有相同的型別。

陣列作為方法引數和返回型別

方法可以獲取陣列型別的引數,也可以把它們作為返回值傳遞。

public void processdata(int data)

foraech(int i in data)

方法要返回乙個陣列,返回型別必須是陣列型別。

public int readdata()

return data;//返回data陣列

複製陣列

要真正複製陣列例項,獲得堆上的實際資料的拷貝,那麼必須做兩件事情。首先,必須建立型別和大小與原始陣列相同的乙個新陣列例項,然後將資料元素從原始陣列逐個複製到新陣列,如下:

int pins = ;

int copy = new int[pins.length];

for(int i=0;i

copy[i] = pins[i];

②copyto方法將乙個陣列的內容複製到另乙個陣列,並從指定的其實索引處開始複製。

int pins = ;

int copy = new int[pins.length];

pins.copyto(copy,0);

③system.array的靜態方法copy

int pins = ;

int copy = new int[pins.length];

array.copy(pins,copy,copy.length);

④system.array的例項方法clone

int pins = ;

int copy = (intpins.clone);

多維陣列

二維陣列的第一維是錶行,第二維是表列。

第十章 Lua陣列

1.一維陣列 array for i 0,2 do print array i end執行結果 nil lua tutorial正如你所看到的,我們可以使用整數索引來訪問陣列元素,如果知道的索引沒有值則返回nil。在 lua 索引值是以 1 為起始,但你也可以指定 0 開始。除此外我們還可以以負數為...

第十章 動態陣列

分類 陣列與指標的藝術2009 11 23 10 46 6542人閱讀 收藏舉報 儲存 程式設計演算法語言 當寫下這個題目的時候,筆者心裡其實非常犯難。因為從本質上來說,本章想闡述的內容與題目所宣示的概念,其實是不一樣的。在程式設計中,我們常常要處理一段長度未知的資料,而且,執行過程中長度可能會發生...

第十章 陣列和指標

陣列初始化 當初始化列表中的值少於陣列元素個數時,編譯器會把剩餘的元素都初始化為0 個數多於陣列元素個數時,會視為錯誤 省略陣列中括號中的數字,編譯器會根據初始化列表中的專案來確定陣列的大小。days是陣列 sizeof days是整個陣列的大小 sizeof day 0 是陣列中乙個元素的大小 c...