位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

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

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

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

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

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

例如:

    int ar r [7];

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

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

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

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

    數(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.說明

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

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

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

(4)“元素個數(shù)”即數(shù)組長度,只能是一個整型常量表達(dá)式??梢允欠柍A?。例如,以下數(shù)組的定義都是合法的:

    int a [5];

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

    char ch [100]:

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

    #define N 5; 

    double b [N*2];

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

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

    int n ;

    float arr2[n];

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

    int n-10; 

    float arr2[n];

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

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

    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ù)組定義都是合法的,而④、⑤、⑥的定義都是不合法的。④的不合法處是因為標(biāo)識符“student”又當(dāng)常量名,又作為數(shù)組名出現(xiàn),這是不允許的。⑤的錯誤之處在于數(shù)組元 素的兩邊一定要是方括號。⑥的錯誤是試圖使用變量作為數(shù)組元素個數(shù)出現(xiàn)。

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

    double salary [8] ,tax[8];

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

    int iuscore[30];


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

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