鍍金池/ 教程/ C++/ D語言數(shù)組
類的訪問修飾符
D語言運(yùn)算符
D語言邏輯運(yùn)算符
類指針
D語言元組
D語言指針
D語言模塊
D語言sizeof運(yùn)算符
D語言混合類型
D語言封裝
D語言條件編譯
類的靜態(tài)成員
D語言do...while循環(huán)
D語言結(jié)構(gòu)體
重載
D語言字符串-String
D語言決策語句
D語言接口
D語言for循環(huán)
D語言switch語句
D語言關(guān)聯(lián)數(shù)組
D語言范圍
D語言枚舉Enums
契約式編程
D語言并發(fā)
D語言開發(fā)環(huán)境設(shè)置
D語言別名
D語言常值
D語言常量
D語言函數(shù)
D語言if嵌套語句
D語言循環(huán)
D語言概述,D語言是什么?
D語言運(yùn)算符優(yōu)先級
D語言continue語句
D語言異常處理
D語言break語句
D語言if...else語句
D語言類和對象
類繼承
D語言字符
D語言教程
D語言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語言抽象類
D語言if語句
D語言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語言類成員函數(shù)
D語言位運(yùn)算符
D語言變量
D語言數(shù)據(jù)類型
D語言文件I/O
D語言數(shù)組
一元運(yùn)算符重載
D語言嵌套switch語句
D語言基本語法
二元運(yùn)算符重載
this指針
D語言聯(lián)合體
D語言模板
D語言嵌套循環(huán)
D語言while循環(huán)

D語言數(shù)組

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è)元素。

聲明數(shù)組:

在D編程語言聲明數(shù)組,程序員指定的元素和如下由陣列所需元素的數(shù)量的類型:

type arrayName [ arraySize ];

這就是所謂的單維數(shù)組。arraySize必須是整數(shù)常量大于零且類型可以是任何有效的D編程語言數(shù)據(jù)類型。例如,要聲明一個(gè)10個(gè)元素的數(shù)組為double類型,使用此語句:

double balance[10];

初始化數(shù)組:

可以初始化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)出來:

Array Presentation

訪問數(shù)組元素:

元素是由索引數(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

靜態(tài)數(shù)組與動(dòng)態(tài)數(shù)組

當(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;

數(shù)組屬性

屬性 描述
.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]

多維數(shù)組

D編程允許多維數(shù)組。這里是一個(gè)多維數(shù)組聲明的一般形式為:

type name[size1][size2]...[sizeN];

例如,下面的聲明創(chuàng)建一個(gè)三維: 5 . 10 . 4整數(shù)數(shù)組:

int threedim[5][10][4];

二維數(shù)組:

多維數(shù)組的最簡單的形式是二維陣列。二維陣列在本質(zhì)上是一維陣列的列表。聲明大小為x,y的二維整型數(shù)組,編寫如下:

type arrayName 上一篇:D語言決策語句下一篇:D語言sizeof運(yùn)算符