數組維數

數組維數

在計算機科學中,數組數據結構(array data structure),簡稱數組(Array),是由相同類型的元素(element)的集合所組成的數據結構,分配一塊連續的記憶體來存儲。數組通常採用一個整數來作下標,在多維數組之中採用一系列有序的整數來標註,如在[ 3,1,5 ] 。這種整數列表之中整數的個數始終相同,且被稱為數組維數。關於每個數組維度的邊界稱為“維”。維度為的數組通常被稱為維。

簡介

數組是一種數據結構,用來存儲同一類型值的集合。通過一個整型下標可以訪問數組的每一個值 。數組維數是指在多維數組之中採用一系列有序的整數來標註,如在[ 3,1,5 ] 。整數列表之中整數始終相同的個數。在資料庫中,數組維數與表中屬性數量有關,屬性越多,數組維數越大。 屬性,共同的性質和特點。計算機中的欄位屬性、資源特性和那些讀取與修改的許可權。例如:檔案屬性、用戶的屬性。按數組維數分類可以分為:一維數組、二維數組、多維數組。

分類

一維數組

一維(或單維)數組是一種線性數組,其中元素的存取是以行或列索引的單一下標表示。

譬如考慮C程式語言的數組宣告

int anArrayName [10];

語法為:

datatype anArrayname [sizeofArray];

在上述範例中,被宣告的數組將包含int型別的10個元素,可為任何整數值。這樣,數組元素的

索引下標則為0-9(含)。例如,anArrayName[0]和anArrayName[9]分別是第一個和最後一個元素的表達。

對於以線性定址的向量,索引為i的元素處於位址B+c×i,其中B是固定的基底位址,c為常數,

有時稱為位址增量或跨步。

如果有效的元素索引從0開始,則常數B只是數組第一個元素的位址。因此C語言指定

數組的索引一定從0開始;許多開發人員會將該元素稱為“第零”而不是“第一”。

然而若適當選擇基底位址B,來作為第一個元素的索引起始值。譬如數組有五個元素,索引為1到5,基底位址B以B+30c來替換,則相同數組的這些元素索引將轉為31到35。如果編號從0開始,則常數B可能不是任何元素的位址。

二維數組

定義

前面介紹的數組只有一個下標,稱為一維數組, 其數組元素也稱為單下標變數。在實際問題中有很多量是二維的或多維的, 因此C語言允許構造多維數組。多維數組元素有多個下標, 以標識它在數組中的位置,所以也稱為多下標變數。本小節只介紹二維數組,多維數組可由二維數組類推而得到。二維數組類型說明的一般形式是:

類型說明符數組名[常量表達式1][常量表達式2]…;

其中常量表達式1表示第一維下標的長度,常量表達式2 表示第二維下標的長度。例如:

int a[3][4]; 說明了一個三行四列的數組,數組名為a,其下標變數的類型為整型。該數組的下標變數共有3×4個,即:

a[0][0],a[0][1],a[0][2],a[0][3]

a[1][0],a[1][1],a[1][2],a[1][3]

a[2][0],a[2][1],a[2][2],a[2][3]

二維數組在概念上是二維的,即是說其下標在兩個方向上變化, 下標變數在數組中的位置也處於一個平面之中, 而不是象一維數組只是一個向量。但是,實際的硬體存儲器卻是連續編址的, 也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數組,可有兩種方式:一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。在C語言中,二維數組是按行排列的。在如上中,按行順次存放,先存放a[0]行,再存放a[1]行,最後存放a[2]行。每行中有四個元素也是依次存放。由於數組a說明為int類型,該類型占兩個位元組的記憶體空間,所以每個元素均占有兩個 位元組(圖中每一格為一位元組)。

多維數組

普通數組採用一個整數來作下標。多維數組(高維數組)的概念特別是在數值計算和圖形套用方面非常有用。我們在多維數組之中採用一系列有序的整數來標註,如在[ 3,1,5 ] 。這種整數列表之中整數的個數始終相同,且被稱為數組的“維度”。關於每個數組維度的邊界稱為“維”。維度為k的數組通常被稱為k維。

多維數組的數組名字,在表達式中自動轉換為數組首元素地址值,但這個首元素實際上是去除數組下標第一維之後的數組剩餘部分。例如:

int a[10][15];

int (*p)[15]=a; // a在表達式中自動轉換為指向具有15個int的數組的指針值。

相關詞條

熱門詞條

聯絡我們