位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

C語(yǔ)言 一維數(shù)組的定義

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-30

1.一維數(shù)組的定義方式

對(duì)一維數(shù)組進(jìn)行定義的方式為:

    類(lèi)型標(biāo)識(shí)符 數(shù)組名[元素個(gè)數(shù)];

例如:

    int ar r [7];

    定義了一個(gè)名為arr的整型數(shù)組,數(shù)組中有7個(gè)元素。

    前面提到過(guò)數(shù)組元素是有序的,這個(gè)有序性并不是說(shuō)數(shù)組中各個(gè)元素的值的大小有序,而是同一個(gè) 數(shù)組的數(shù)組元素在內(nèi)存中的存儲(chǔ)空間是連續(xù)的,按照數(shù)組元素的下標(biāo)從小到大依次存放。其中,數(shù)組名代表該數(shù)組的首地址,例如上例中,arr是數(shù)組名,代表數(shù)組在內(nèi)存中的首地址,因?yàn)閿?shù)組元素依次存放,所以如果知道首地址,就可以推斷出數(shù)組中每個(gè)元素的地址。

    數(shù)組元素地址=數(shù)組首地址+元素下標(biāo)+siziof (數(shù)組類(lèi)型)

    假設(shè):每個(gè)整型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié),數(shù)組arr的起始地址(即數(shù)組中的第一個(gè)元素的地址)為2000,下圖所示是數(shù)組arr在內(nèi)存中的存儲(chǔ)示意圖。那么,從公式中可以推斷出:

    數(shù)組元素arr[3]的地址為:2000+3*4=2012。

2000

78

drr[0]

2004

72

arr[1]

2008

91

arr[2]

2012

87

arr[3]

2016

90

arr[4]

2020

57

<arr[5]

2024

69

drr[6]

2.說(shuō)明

(1)類(lèi)型標(biāo)識(shí)符說(shuō)明數(shù)組元素的類(lèi)型??梢允莍nt、long、char、float、double等。

(2)數(shù)組名的命名規(guī)則與變量的命名規(guī)則相同,遵循標(biāo)識(shí)符的命名規(guī)則。

(3)數(shù)組元素的下標(biāo)從0開(kāi)始,所以arr[0]為第一個(gè)元素,arr[6]為該數(shù)組的最后一個(gè)元素,不存在數(shù)組元素arr[7]。由于C語(yǔ)言對(duì)于下標(biāo)越界錯(cuò)誤不做判讀,不報(bào)錯(cuò),所以如果程序設(shè)計(jì)中,不小心出現(xiàn)了arr[7], C編譯系統(tǒng)也不會(huì)報(bào)錯(cuò)。如果輸出,會(huì)輸出一個(gè)不確定值,所以需要編程人員自己慎重控制。

(4)“元素個(gè)數(shù)”即數(shù)組長(zhǎng)度,只能是一個(gè)整型常量表達(dá)式。可以是符號(hào)常量。例如,以下數(shù)組的定義都是合法的:

    int a [5];

定義了一個(gè)數(shù)組名為a的整型數(shù)組,其中含5個(gè)元素。

    char ch [100]:

定義一個(gè)有100個(gè)元素的字符數(shù)組,數(shù)組名為ch。

    #define N 5; 

    double b [N*2];

使用符號(hào)常量N定義了一個(gè)double型數(shù)組,里面含10個(gè)元素。

需要注意的是:C語(yǔ)言不允許使用變量定義長(zhǎng)度不定的動(dòng)態(tài)數(shù)組,所以“元素個(gè)數(shù)”中不能包括變量。例如,以下定義是錯(cuò)誤的:

    int n ;

    float arr2[n];

因?yàn)閏編譯系統(tǒng)需要根據(jù)定義數(shù)組中元素的個(gè)數(shù)和類(lèi)型為數(shù)組分配相應(yīng)大小的內(nèi)存空間。如果使用變量定義數(shù)組,變量的值不確定,所以編譯系統(tǒng)無(wú)法確定數(shù)組的大小。即便把上述定義改為如下方式:

    int n-10; 

    float arr2[n];

也是不對(duì)的,因?yàn)閚的值只有在程序運(yùn)行階段才能確定,而數(shù)組空間的分配則是在編譯階段完成的。

(5)定義數(shù)組時(shí),數(shù)組元素兩邊一定是方括號(hào),寫(xiě)成括號(hào)或花括號(hào)都是錯(cuò)誤的。例如:

    int a(10); 

 ,  long x{5);

例:判斷下列數(shù)組的定義哪些是合法的,哪些是不合法的。

②int student [35];

②char name [20];

③float score [35];

  #deflne student 35

  float n, student[student];

④int  person(1O);

⑤int n=10, a[n];

其中,①、②、③題中的數(shù)組定義都是合法的,而④、⑤、⑥的定義都是不合法的。④的不合法處是因?yàn)闃?biāo)識(shí)符“student”又當(dāng)常量名,又作為數(shù)組名出現(xiàn),這是不允許的。⑤的錯(cuò)誤之處在于數(shù)組元 素的兩邊一定要是方括號(hào)。⑥的錯(cuò)誤是試圖使用變量作為數(shù)組元素個(gè)數(shù)出現(xiàn)。

(6)和變量一樣,可以在一個(gè)類(lèi)型聲明中聲明多個(gè)數(shù)組。例如:

    double salary [8] ,tax[8];

也可以變量和數(shù)組進(jìn)行混合聲明。例如:

    int iuscore[30];


繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部