C語(yǔ)言數(shù)組的定義及引用

C語(yǔ)言數(shù)組的定義及引用

C語(yǔ)言數(shù)組的定義及引用1 1.1 一維數(shù)組的定義、初始化和引用 1.一維數(shù)組的定義方式為: 類型說(shuō)明符 數(shù)組名[常量表達(dá)式] (1)數(shù)組名的百科命名方法與變量名相同,遵循標(biāo)識(shí)符命名規(guī)則; (2)數(shù)組是用方括號(hào)括起來(lái)的常量表達(dá)式,不能用圓括號(hào); (3)常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度,數(shù)組的下標(biāo)從0開始,下標(biāo)的**值為:常量表達(dá)式-1; (4)常量表達(dá)式中可以包括常量和符號(hào)常量,不能包括變量。 可以用賦值語(yǔ)句或輸入語(yǔ)句使數(shù)組中的元素得到值,但要占用運(yùn)行時(shí)間。

可以使數(shù)組在運(yùn)行之前初始化,即在編譯階段使之得到初值。

2.對(duì)數(shù)組初始化可以用以下方法實(shí)現(xiàn): (1)在定義數(shù)組時(shí)對(duì)數(shù)組元素賦以初值。如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 經(jīng)過(guò)上面的定義和初始化后,a[0]=0,a[1]=1,…,a[9]=9。 (2)初始化時(shí)可以只對(duì)一部分元素賦初值。例如: static int a[10]={0,1,2,3,4}; 定義的數(shù)組有10個(gè)元素,但只對(duì)其中前5個(gè)元素賦了初值,后5個(gè)元素初值為0。

(3)如果想使一個(gè)數(shù)組的元素值全部為0,可以用下面的方法: static int a[10]={0,0,0,0,0,0,0,0,0,0}; 不能用: static int a[10]={0*10}; 如果對(duì)static型數(shù)組不賦初值,系統(tǒng)會(huì)對(duì)定義的所有數(shù)組元素自動(dòng)賦以0值。 (4)在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。 3.一維數(shù)組的引用方法是: C語(yǔ)言規(guī)定不能一次引用整個(gè)數(shù)組,引用時(shí)只能逐個(gè)元素引用,數(shù)組元素的表示形式為: 數(shù)組名[下標(biāo)] 下標(biāo)可以是整型常量或整型表達(dá)式。

如: a[0]=a[5]+a[7]-a[2*3]; 1.2 二維數(shù)組的定義、初始化和引用 1.二維數(shù)組定義的一般形式為 類型說(shuō)明符數(shù)組名[常量表達(dá)式][常量表達(dá)式] C語(yǔ)言采用上述定義方法,我們可以把二維數(shù)組看做是一種特殊的一維數(shù)組:它的元素又是一維數(shù)組。在C語(yǔ)言中,二維數(shù)組中元素的排列順序是:先按行存放,再按列存放,即在內(nèi)存中先順序存放**行的元素,再存放第二行的元素。 2.二維數(shù)組的初始化:二維數(shù)組可以用下面的方法初始化: (1)分行給二維數(shù)組賦初值。

如: static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 以上賦值把**個(gè)花括號(hào)內(nèi)的數(shù)據(jù)賦給**行元素,第二個(gè)花括號(hào)內(nèi)數(shù)據(jù)賦給第二元素…,即按行賦值。 (2)可以將所有的數(shù)據(jù)寫在一個(gè)花括號(hào)內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x值。 (3)可以對(duì)數(shù)組的部分元素賦初值。

如: static int a[3][4]={{1},{5},{9}}; 以上賦值的結(jié)果是:數(shù)組**列的元素分別賦了初值1,5,9,其余元素的值都是0。 (4)如果對(duì)二維數(shù)組的全部元素都賦初值,則定義數(shù)組時(shí)對(duì)**維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。 3.二維數(shù)組的引用:二維數(shù)組的元素可以表示為: 數(shù)組[下標(biāo)][下標(biāo)] 在引用二維數(shù)組時(shí),必須是單個(gè)元素,不能是整個(gè)數(shù)組名。下標(biāo)可以是一個(gè)表達(dá)式,但不能是變量。

如果下標(biāo)是一個(gè)表達(dá)式,注意表達(dá)式的值不能超出數(shù)組定義的上、下限。 C語(yǔ)言數(shù)組的定義及引用2 指針數(shù)組說(shuō)明的一般形式為: 類型說(shuō)明符 *數(shù)組名[數(shù)組長(zhǎng)度] 其中類型說(shuō)明符為指針值所指向的變量的類型。例如: int *pa[3] 表示pa是一個(gè)指針數(shù)組,它有三個(gè)數(shù)組元素,每個(gè)元素值都是一個(gè)指針,指向整型變量。 【例10-33】通常可用一個(gè)指針數(shù)組來(lái)指向一個(gè)二維數(shù)組。

指針數(shù)組中的每個(gè)元素被賦予二維數(shù)組每一行的首地址,因此也可理解為指向一個(gè)一維數(shù)組。 main(){ int a[3][3]={1,2,3,4,5,6,7,8,9}; int *pa[3]={a[0],a[1],a[2]}; int *p=a[0]; int i; for(i=0;i<3;i++) printf(\”%d,%d,%d \”,a[i][2-i],*a[i],*(*(a+i)+i)); for(i=0;i<3;i++) printf(\”%d,%d,%d \”,*pa[i],p[i],*(p+i)); } 本例程序中,pa是一個(gè)指針數(shù)組,三個(gè)元素分別指向二維數(shù)組a的各行。然后用循環(huán)語(yǔ)句輸出指定的數(shù)組元素。其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p與a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。

讀者可仔細(xì)領(lǐng)會(huì)元素值的各種不同的表示方法。 應(yīng)該注意指針數(shù)組和二維數(shù)組指針變量的區(qū)別。這兩者雖然都可用來(lái)表示二維數(shù)組,但是其表示方法和意義是不同的。

二維數(shù)組指針變量是單個(gè)的變量,其一般形式中\(zhòng)”(*指針變量名)\”兩邊的括號(hào)不可少。而指針數(shù)組類型表示的是多個(gè)指針(一組有序指針)在一般形式中\(zhòng)”*指針數(shù)組名\”兩邊不能有括號(hào)。例如: int (*p)[3]; 表示一個(gè)指向二維數(shù)組的指針變量。

該二維數(shù)組的列數(shù)為3或分解為一維數(shù)組的長(zhǎng)度為3。 int *p[3] 表示p是一個(gè)指針數(shù)組,有三個(gè)下標(biāo)變量p[0],p[1],p[2]均為指針變量。 指針數(shù)組也常用來(lái)表示一組字符串,這時(shí)指針數(shù)組的每個(gè)元素被賦予一個(gè)字符串的首地址。指向字符串的指針數(shù)組的初始化更為簡(jiǎn)單。

例如在例10.32中即采用指針數(shù)組來(lái)表示一組字符串。其初始化賦值為: char *name[]={\”Illagal day\”, \”Monday\”, \”Tuesday\”, \”Wednesday\”, \”Thursday\”, \”Friday\”, \”Saturday\”, \”Sunday\” }; 完成這個(gè)初始化賦值之后,name[0]即指向字符串\”Illegal day\”,name[1]指向\”Monday\”……。 指針數(shù)組也可以用作函數(shù)參數(shù)。

【例10-34】指針數(shù)組作指針型函數(shù)的參數(shù)。 在本例主函數(shù)中,定義了一個(gè)指針數(shù)組name,并對(duì)name 作了初始化賦值。其每個(gè)元素都指向一個(gè)字符串。然后又以name作為實(shí)參調(diào)用指針型函數(shù)day_name,在調(diào)用時(shí)把數(shù)組名name賦予形參變量name,輸入的整數(shù)i作為第二個(gè)實(shí)參賦予形參n。

在day_ name函數(shù)中定義了兩個(gè)指針變量pp1和pp2,pp1被賦予name[0]的值(即*name),pp2被賦予name[n]的值即*(name+ n)。由條件表達(dá)式?jīng)Q定返回pp1或pp2指針給主函數(shù)中的指針變量ps。**輸出i和ps的值。

main(){ static char *name[]={ \”Illegal day\”, \”Monday\”, \”Tuesday\”, \”Wednesday\”, \”Thursday\”, \”Friday\”, \”Saturday\”, \”Sunday\” }; char *ps; int i; char *day_name(char *name[],int n); printf(\”input Day No: \”); scanf(\”%d\”,&i); if(i<0) exit(1); ps=day_name(name,i); printf(\”Day No:%2d–>%s \”,i,ps); } char *day_name(char *name[],int n){ char *pp1,*pp2; pp1=*name; pp2=*(name+n); return((n<1||n>7)? pp1:pp2); } 【例10-35】輸入5個(gè)國(guó)名并按字母順序排列后輸出。現(xiàn)編程如下: #include\”string.h\” main(){ void sort(char *name[],int n); void print(char *name[],int n); static char *name[]={ \”CHINA\”,\”AMERICA\”,\”AUSTRALIA\”,\”FRANCE\”,\”GERMAN\”}; int n=5; sort(name,n); print(name,n); } void sort(char *name[],int n){ char *pt; int i,j,k; for(i=0;i<n-1;i++){ k=i; for(j=i+1;j<n;j++) if(strcmp(name[k],name[j])>0) k=j; if(k!=i){ pt=name[i]; name[i]=name[k]; name[k]=pt; } } } void print(char *name[],int n){ int i; for (i=0;i<n;i++) prin。

在vf中,怎么定義一個(gè)數(shù)值型的數(shù)組?

DIMENSION 命令創(chuàng)建一維或二維內(nèi)存變量數(shù)組。語(yǔ)法DIMENSION ArrayName1 (nRows1 [, nColumns1]) [, ArrayName2 (nRows2 [, nColumns2])] …參數(shù)ArrayName1指定數(shù)組名。

可以通過(guò)包含多個(gè)數(shù)組名(ArrayName2, ArrayName3 等)用一個(gè) DIMENSION 命令創(chuàng)建多個(gè)數(shù)組。

nRows1 [, nColumns1]指定要?jiǎng)?chuàng)建的數(shù)組大小。如果只包含 nRows1,就創(chuàng)建一維數(shù)組。一維數(shù)組含有一列和 nRows1 行。例如,下列命令創(chuàng)建一個(gè)名為 gaArrayOne 的一列十行的數(shù)組。

DIMENSION gaArrayOne(10)若要?jiǎng)?chuàng)建二維數(shù)組,應(yīng)包含 nRows1 和 nColumns1。nRows1 指定數(shù)組中的行數(shù),nColumns1 指定列數(shù)。下列命令創(chuàng)建一個(gè)名為 gaArrayTwo 的二行四列的二維數(shù)組。

DIMENSION gaArrayTwo(2,4)使用 DIMENSION 創(chuàng)建數(shù)組時(shí),必須指定大小。在下面的示例中,創(chuàng)建了三個(gè)數(shù)組:前面兩個(gè)示例中的數(shù)組 gaArrayOne 和 gaArrayTwo,以及第三個(gè)名為 gaArrayThree 的數(shù)組:DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3)在 DIMENSION 或 DECLARE 中,可以用方括號(hào)或圓括號(hào)括起表達(dá)式。例如,下面的兩個(gè)命令創(chuàng)建相同的數(shù)組:DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]數(shù)組元素一個(gè)數(shù)組的大小決定了它包含的元素?cái)?shù)目。

數(shù)組中的每個(gè)元素可以存儲(chǔ)一條信息。要確定一個(gè)數(shù)組中包含的元素?cái)?shù)目和存儲(chǔ)的信息量,可用數(shù)組的行 (nRows1) 數(shù)乘以數(shù)組的列數(shù) (nColumns1)。數(shù)組元素可以包含任何類型的數(shù)據(jù),并在最初創(chuàng)建數(shù)組時(shí)將它們初始化為“假”(.F.)。

如果 SET COMPATIBLE 設(shè)置為 FOXPLUS 或 OFF(默認(rèn)設(shè)置),那么可以用 STORE 將一個(gè)數(shù)組中所有元素初始化為相同的值。例如,DIMENSION gaArray(10,3)STORE \’initial\’ TO gaArray數(shù)組下標(biāo)通過(guò)下標(biāo)來(lái)引用數(shù)組中的元素。每個(gè)數(shù)組元素都有**一個(gè)可以識(shí)別它的數(shù)值下標(biāo)。如果數(shù)組是一維的,則數(shù)組元素的下標(biāo)與它的行號(hào)相同。

例如,一個(gè)一維數(shù)組第三行中元素的下標(biāo)就是 3。通過(guò)兩個(gè)下標(biāo)來(lái)引用二維數(shù)組中的元素。**個(gè)下標(biāo)表明元素的行位置,第二個(gè)下標(biāo)表明元素的列位置。例如,一個(gè)二維數(shù)組第三行第四列中的元素下標(biāo)為 3,4。

有關(guān)數(shù)組元素下標(biāo)的進(jìn)一步討論,請(qǐng)參閱 ASUBSCRIPT( )。數(shù)組中**個(gè)元素的下標(biāo)通常從 1 開始。如果數(shù)組是二維的,也可以用單個(gè)下標(biāo)引用它。可使用 AELEMENT( ) 根據(jù)數(shù)組的行列下標(biāo)中返回單個(gè)下標(biāo);使用 ASUBSCRIPT( ) 根據(jù)單個(gè)下標(biāo)返回行列下標(biāo)。

重新定義數(shù)組的維數(shù)重新執(zhí)行 DIMENSION 命令可以改變數(shù)組的大小和維數(shù)。數(shù)組的大小可以增加或減小,一維數(shù)組可以轉(zhuǎn)換為二維數(shù)組,二維數(shù)組可以降低為一維數(shù)組。如果數(shù)組中元素的數(shù)目增加了,就將原數(shù)組中所有元素內(nèi)容**到維數(shù)重新調(diào)整過(guò)的數(shù)組中,增加的數(shù)組元素初始化為“假”(.F.)。

說(shuō)明DIMENSION 在操作與語(yǔ)法上與 DECLARE 相同。

建立一個(gè)數(shù)組,數(shù)組中包括三個(gè)元素,然后訪問(wèn)數(shù)組元素!

定義數(shù)組數(shù)組對(duì)象用來(lái)在單獨(dú)的變量名中存儲(chǔ)一系列的值。我們使用關(guān)鍵詞 new 來(lái)創(chuàng)建數(shù)組對(duì)象。

下面的代碼定義了一個(gè)名為 myArray 的數(shù)組對(duì)象:var myArray=new Array()有兩種向數(shù)組賦值的方法(你可以添加任意多的值,就像你可以定義你需要的任意多的變量一樣)。

1:var mycars=new Array()mycars[0]=\”Saab\”mycars[1]=\”Volvo\”mycars[2]=\”BMW\”也可以使用一個(gè)整數(shù)自變量來(lái)控制數(shù)組的容量:var mycars=new Array(3)mycars[0]=\”Saab\”mycars[1]=\”Volvo\”mycars[2]=\”BMW\”2:var mycars=new Array(\”Saab\”,\”Volvo\”,\”BMW\”)注意:如果你需要在數(shù)組內(nèi)指定數(shù)值或者邏輯值,那么變量類型應(yīng)該是數(shù)值變量或者布爾變量,而不是字符變量。訪問(wèn)數(shù)組通過(guò)指定數(shù)組名以及索引號(hào)碼,你可以訪問(wèn)某個(gè)特定的元素。