使用typedef語句定義陣列型別

2021-07-01 20:47:34 字數 2974 閱讀 7140

使用typedef語句定義陣列型別

1. 一維陣列型別的定義格式

typedef 《元素型別關鍵字》《陣列型別名》[《常量表示式》];

例如:

(1) typedef int vector[10];

(2) typedef char strings[80];

(3) typedef short int array[n];

第一條語句定義了乙個元素型別為int,含有10個元素的陣列型別vector,若不使用typedef保留字,則就變成了陣列定義,它只定義了乙個元素型別為int、含有10個元素的陣列vector。這兩種定義有著本質的區別,若定義的是陣列vector,系統將為它分配有儲存10個整數的儲存單元,共40個位元組的儲存空間;若定義的是陣列型別vector,系統只是把該型別的有關資訊登記下來,待以後利用該型別定義物件時使用,具體地說,就是把vector的元素型別int,型別長度10,型別名vectoe等登記下來,待以後定義vector型別的物件時使用。

第二條語句定義了乙個元素型別為char,含有80個元素的陣列型別strings,以後可以直接使用strings型別定義陣列物件,每個陣列物件的元素為char型,陣列長度(即元素個數)為80。

第三條語句定義了乙個元素型別為short int的含有n個元素(n為已定義的符號常量)的陣列型別array,以後利用它可以直接定義該型別的物件,它是乙個含有n個短整型元素的陣列。

下面是利用上述型別定義物件的一些例子。

(1) vector v1,v2;

(2) strings s1,s2="define type";

(3) array a=;  //假定常量n≥6

第一條語句定義了vector型別的兩個物件v1和v2,每個物件都是vector型別的乙個陣列,每個陣列由10個整型元素所組成。

第二條語句定義了strings型別的三個物件s1,s2和s3,並且對s3進行了初始化,每個物件都是含有80個字元空間的陣列。

第三條語句定義了乙個array型別的物件a,它是乙個含有n個短整型元素的陣列,該語句同時對陣列a進行了初始化,使得a[0]

~a[5]的元素值依次為25,36,19,48,44和50。

2. 二維陣列型別的定義格式

typedef 《元素型別關鍵字》《陣列型別名》[《常量表示式1>][《常量表示式2>];

例如:

(1) typedef int matrix[5][5];

(2) typedef char nametable[10][nn];

(3) typedef double dd[m+1][n+1];

第一條語句定義了含有5行5列共25個int型元素的陣列型別matrix,第二條語句定義了10行nn列共10*nn個char型元素的陣列型別nametable,第三條語句定義了含有m+1行n+1列共(m+1)*(n+1)個double型別元素的陣列型別dd。

利用這三個二維陣列型別可以直接定義出相應的二維陣列。如:

(1) matrix mx=};

(2) nametable nt=;  //或使用等同的}初始化

(3) dd dd=};

第一條語句定義了二維整型陣列型別matrix的乙個物件mx,該物件是乙個5*5的二維整型陣列,每個元素均被初始化為0;第二條語句定義了二維字元陣列型別nametable 的乙個二維字元陣列nt,該陣列中的每個元素均被初始化為空字元;第三條語句定義了二維雙精度陣列型別dd的乙個陣列dd,它的每個元素均被初始化為0.0。

在typedef語句中,《元素型別關鍵字》可以是c++語言中預定義的任何一種資料型別,也可以是使用者在前面已定義的任何一種資料型別,所以通過該語句定義的型別同樣可以用在其後的typedef語句中。如:

(1) typedef vector vectorset[20];

(2) vectorset vs;

第一條語句定義了元素型別為vector,元素個數為20的乙個陣列型別vectorset,第二條語句定義了資料型別為vectorset的乙個物件vs,該物件包含有20個型別為vector的元素,每個元素又包含有10個int型別的元素,所以整個陣列共包含有20行10列共200個整數元素,它等同於對vs的如下定義:

int vs[20][10];

利用typedef語句同樣可以定義更高維的陣列型別,這裡就不進行討論了。

3. 對已有型別定義別名

利用typedef語句不僅能夠定義陣列型別,而且能夠對已有型別定義出另乙個型別名,以此作為原型別的乙個別名。如:

(1) typedef int indata;

(2) typedef char chdata;

(3) typedef char* chpointer;

第一條語句對int型別定義了乙個別名indata,第二條語句對char型別定義了乙個別名chdata,第三條語句對char*型別(它是字元指標型別)定義了乙個別名chpointer。以後使用indata,chdata和chpointer就如同分別使用int,char和char*一樣,定義出相應的物件。如:

(1) indata x,y;

(2) indata a[5]=;

(3) chdata b1,b2='a';

(4) chdata c[10]="char data";

(5) chpointer p=0;

第一條語句定義了indata(即int)型的兩個變數x和y,第二條語句定義了元素型別為int的一維陣列a[5]並進行了初始化,第三條語句定義了chdata(即char)型的兩個變數b1和b2,並把b2初始化為

』a』, 第四條語句定義了乙個字元陣列c[10]並初始化為」char data」, 第五條語句定義了乙個字元指標變數

p,並初始化為0(即null)

使用typedef語句定義陣列型別

使用typedef語句定義陣列型別 1.一維陣列型別的定義格式 typedef 元素型別關鍵字 陣列型別名 常量表示式 例如 1 typedef int vector 10 2 typedef char strings 80 3 typedef short int array n 第一條語句定義了乙...

使用typedef語句定義陣列型別

使用typedef語句定義陣列型別 1.一維陣列型別的定義格式 typedef 元素型別關鍵字 陣列型別名 常量表示式 例如 1 typedef int vector 10 2 typedef char strings 80 3 typedef short int array n 第一條語句定義了乙...

使用typedef語句定義陣列型別

使用typedef語句定義陣列型別 1.一維陣列型別的定義格式 typedef 元素型別關鍵字 陣列型別名 常量表示式 例如 1 typedef int vector 10 2 typedef char strings 80 3 typedef short int array n 第一條語句定義了乙...