默認數組大小

默認數組大小

數組一種構造型數據類型,它是由一組相同類型的成份(或稱為元素)構成的變數組。同一數組中的元素的名字是用數組名再加上相應的下標,因此又稱下標變數。默認數組大小是指有關函式中已經定義好了數組的大小,調用時可以直接調用,不必初始化數組的大小。

簡介

默認數組大小即程式已經設定好的數組大小。這裡的數組可以是一維數組、二維數組以及多維數組,主要與具體套用有關。例如,在C語言中,申請記憶體空間使用的默認數組大小就是一維數組;又例如在資料庫,二維表就是一個二維數組,其設定的大小可以當做是默認數組大小。

二維表

概述

在關係模型中,數據結構表示為一個二維表,一個關係就是一個二維表(但不是任意一個二維表都能表示一個關係,例如兩個元組的候選鍵相同即表中的任意兩行相同,就不能表示一個關係。 ),二維表名就是關係名。表中的第一行通常稱為屬性名,表中的每一個元組和屬性都是不可再分的,且元組的次序是無關緊要的。常用的關係術語如下:

記錄 二維表中每一行稱為一個記錄,或稱為一個元組。

欄位 二維表中每一列稱為一個欄位,或稱為一個屬性。

域 即屬性的取值範圍。

性質

二維表一般滿足下面7個性質:

(1)二維表中元組個數是有限的——元組個數有限性;

(2)二維表中元組均不相同——元組的唯一性;

(3)二維表中元組的次序可以任意交換——元組的次序無關性;

(4)二維表中元組的分量是不可分割的基本數據項——元組分量的原子性;

(5)二維表中屬性名各不相同——屬性名唯一性;

(6)二維表中屬性與次序無關,可任意交換——屬性的次序無關性;

(7)二維表屬性的分量具有與該屬性相同的值域——分量值域的統一性。

一維數組

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

譬如考慮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的數組的指針值。

聲明固定大小的數組

有三種方法聲明固定大小的數組,用哪一種方法取決於數組應有的有效範圍:

建立公用數組,在模組的聲明段用 Public語句聲明數組。

建立模組級數組,在模組的聲明段用 Private語句聲明數組。

建立局部數組,在過程中用 Private語句聲明數組。

數組類型

數組類型變數採用如下方法表示,即一個基類型後面帶有空的中括弧[ ]。還有一種做法,Java接受C風格的聲明,即在數組名後可以放置中括弧。

以下聲明是等價的:

int [ ] arrayOfInts;

int arrayOfInts [ ];

無論哪一種情況,array Of Ints均聲明為一個整型數組。此數組的大小尚不可知,因為我們只定義了數組類型變數。至此還沒有創建此數組類的一個具體實例,即沒有為之關聯存儲空間。聲明一個數組類型變數時指定數組的長度甚至是不可能的。[2]

對象數組可以採用同樣的方式創建:

String [ ] someStrings;

Button someButtons [ ];

相關詞條

熱門詞條

聯絡我們