D編程語言提供了一種數(shù)據(jù)結(jié)構(gòu),數(shù)組用于存儲相同類型的元素的一個(gè)固定大小的連續(xù)集合。數(shù)組是用于存儲數(shù)據(jù)的集合,但它往往認(rèn)為陣列為相同類型的變量的集合。
相反聲明個(gè)別變數(shù),如number0, number1, ..., 和number99,聲明一個(gè)數(shù)組變量,如使用數(shù)字numbers[0], numbers[1], 和..., numbers[99]來表示各個(gè)變量。在數(shù)組中的特定元素是通過索引來訪問。
所有陣列組成的連續(xù)的存儲單元。最低的地址對應(yīng)于所述第一元素,而最高地址的最后一個(gè)元素。
在D編程語言聲明數(shù)組,程序員指定的元素和如下由陣列所需元素的數(shù)量的類型:
type arrayName [ arraySize ];
這就是所謂的單維數(shù)組。arraySize必須是整數(shù)常量大于零且類型可以是任何有效的D編程語言數(shù)據(jù)類型。例如,要聲明一個(gè)10個(gè)元素的數(shù)組為double類型,使用此語句:
double balance[10];
可以初始化D編程語言的數(shù)組元素或者一個(gè)接一個(gè),或使用一個(gè)單獨(dú)的語句如下:
double balance[5] = [1000.0, 2.0, 3.4, 17.0, 50.0];
方括號內(nèi)[]的值的個(gè)數(shù)在右邊不能比,我們的聲明方括號[]之間的數(shù)組元素的個(gè)數(shù)較大。下面是一個(gè)示例來指定數(shù)組的單個(gè)元素:
如果省略數(shù)組的大小,創(chuàng)建數(shù)組的大小剛好能容納初始化。因此,如果編寫:
double balance[] = [1000.0, 2.0, 3.4, 17.0, 50.0];
將創(chuàng)建完全相同的數(shù)組,和在前面的例子中那樣。
balance[4] = 50.0;
上述聲明數(shù)組的值50.0在指定元素?cái)?shù)第5位。與第四索引數(shù)組將是第五次,即最后一個(gè)元素,因?yàn)樗械臄?shù)組都是讓 0作為他們的第一個(gè)元素,也被稱為基本索引的索引。以下是我們上面討論的相同陣列的圖案表現(xiàn)出來:
元素是由索引數(shù)組名訪問。這是通過將一個(gè)元素的索引數(shù)組的名稱之后方括號內(nèi)進(jìn)行。例如:
double salary = balance[9];
上面的語句將第10元素從數(shù)組并賦值給變量salary。下面是一個(gè)例子,這將使用所有上述三個(gè)概念即:聲明,賦值和訪問數(shù)組:
import std.stdio; void main() { int n[ 10 ]; // n is an array of 10 integers // initialize elements of array n to 0 for ( int i = 0; i < 10; i++ ) { n[ i ] = i + 100; // set element at location i to i + 100 } writeln("Element Value"); // output each array element's value for ( int j = 0; j < 10; j++ ) { writeln(j," ",n[j]); } }
讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
Element Value 0 100 1 101 2 102 3 103 4 104 5 105 6 106 7 107 8 108 9 109
當(dāng)在程序被寫入所指定的數(shù)組的長度,該陣列是一個(gè)靜態(tài)數(shù)組。當(dāng)長度可以在程序的執(zhí)行過程中發(fā)生變化,該陣列是一個(gè)動(dòng)態(tài)數(shù)組。
定義動(dòng)態(tài)數(shù)組不是定義固定長度的陣列,因?yàn)槭÷蚤L度使得一個(gè)動(dòng)態(tài)數(shù)組簡單:
int[] dynamicArray;
屬性 | 描述 |
---|---|
.init | 靜態(tài)數(shù)組返回一個(gè)數(shù)組字面量的字面即數(shù)組元素類型。初始化屬性中的每個(gè)元素。 |
.sizeof | 靜態(tài)數(shù)組返回?cái)?shù)組的長度乘以每個(gè)數(shù)組元素的字節(jié)數(shù),而動(dòng)態(tài)數(shù)組返回動(dòng)態(tài)數(shù)組的引用,在32位版本大小為8,在64位版本的大小為16。 |
.length | 靜態(tài)數(shù)組返回,而動(dòng)態(tài)數(shù)組是用來獲取/設(shè)置數(shù)組中的元素個(gè)數(shù)數(shù)組中元素的個(gè)數(shù)。長度的類型為size_t。 |
.ptr | 返回一個(gè)指向數(shù)組的第一個(gè)元素。 |
.dup | 創(chuàng)建同樣大小的動(dòng)態(tài)數(shù)組及數(shù)組中的內(nèi)容復(fù)制到其中。 |
.idup | 創(chuàng)建同樣大小的動(dòng)態(tài)數(shù)組及數(shù)組中的內(nèi)容復(fù)制到其中。該副本的類型為是不可變的。 |
.reverse | 在當(dāng)前位置倒轉(zhuǎn)數(shù)組中的元素的順序。返回?cái)?shù)組。 |
.sort | 在這里各種陣列中的元素的順序。返回?cái)?shù)組。 |
下面的例子說明可用于數(shù)組的各種屬性。
import std.stdio; void main() { int n[ 5 ]; // n is an array of 5 integers // initialize elements of array n to 0 for ( int i = 0; i < 5; i++ ) { n[ i ] = i + 100; // set element at location i to i + 100 } writeln("Initialized value:",n.init); writeln("Length: ",n.length); writeln("Size of: ",n.sizeof); writeln("Yiibaier:",n.ptr); writeln("Duplicate Array: ",n.dup); writeln("iDuplicate Array: ",n.idup); n = n.reverse.dup; writeln("Reversed Array: ",n); writeln("Sorted Array: ",n.sort); }
讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
Initialized value:[0, 0, 0, 0, 0] Length: 5 Size of: 20 Yiibaier:7FFF5A373920 Duplicate Array: [100, 101, 102, 103, 104] iDuplicate Array: [100, 101, 102, 103, 104] Reversed Array: [104, 103, 102, 101, 100] Sorted Array: [100, 101, 102, 103, 104]
D編程允許多維數(shù)組。這里是一個(gè)多維數(shù)組聲明的一般形式為:
type name[size1][size2]...[sizeN];
例如,下面的聲明創(chuàng)建一個(gè)三維: 5 . 10 . 4整數(shù)數(shù)組:
int threedim[5][10][4];
多維數(shù)組的最簡單的形式是二維陣列。二維陣列在本質(zhì)上是一維陣列的列表。聲明大小為x,y的二維整型數(shù)組,編寫如下:
type arrayName 上一篇:D語言決策語句下一篇:D語言sizeof運(yùn)算符