官术网_书友最值得收藏!

2.8 數組

迄今為止,我們使用的都是屬于基本類型(整型、字符型、實型)的數據,C語言還提供了構造類型的數據,它們有:數組類型、結構體類型、共用體類型。構造類型數據是由基本類型數據按一定規則組成的,因此有的書稱它們為“導出類型”,本書中只介紹數組。數組是有序數據的集合,數組中的每個元素都屬于同一個數據類型,用一個統一的數組名和下標來唯一地確定數組中的元素。有關數組的概念和數學中介紹的是相同的,這里只介紹C語言中如何定義和使用數組。

(1)一維數組的定義

一維數組的定義方式為:

類型說明符 數組名[常量表達式];

例如:int a[10];

它表示數組名為a,此數組有10個元素。

說明:

①數組名命名規則和變量名相同,遵循標識符命名規則。

②數組名后是用中括號括起來的常量表達式,不能用小括號,下面用法不對:

  

③常量表達式表示元素的個數,即數組長度。例如a[10]中10表示a數組中有10個元素,下標從0開始,這10個元素是:a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。注意不能使用數組元素a[10]。

④常量表達式中可包括常量和符號常量,不能包含變量。也就是說,C不允許對數組的大小作動態定義,即數組的大小不依賴于程序運行過程中變量的值。例如,下面這樣定義數組是不行的:

  

(2)一維數組元素的引用

數組必須先定義,然后使用。C語言規定只能逐個引用數組元素而不能一次引用整個數組。

數組元素的表示形式為:

數組名[下標]

下標可以是整型常量或整型表達式。如:

  

運行結果為9 8 7 6 5 4 3 2 1 0

(3)一維數組的初始化

可以用賦值語句或輸入語句使數組中的元素得到初值,但占運行時間。可以使數組在程序運行之前初始化,即在編譯階段使之得到初值。對數組元素的初始化可以用以下方法實現:

①在定義數組時對數組元素賦以初值。例如:

  

將數組元素的初值依次放在一對大括號內。注意int的前面有一個關鍵字staic,它是“靜態存儲”的意思,C51語言規定只有靜態存儲(staic)數組和外部存儲(extern)數組才能初始化。

經過上面的定義和初始化之后,a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9。

②可以只給一部分元素賦值。例如:

  

定義a數組有10個元素,但大括號內只提供5個初值,這表示只給前面5個元素賦初值,后5個元素值為0。

③如果想使一個數組中全部元素值為0,可以寫成

  

其實,對static數組不賦初值,系統會對所有數組元素自動賦以0值。即

  

④在對全部數組元素賦初值時,可以不指定數組長度。例如:

  

在第二種寫法中,大括號中有5個數,系統就會據此自動定義a數組的長度為5。但若被定義的數組長度與提供初值的個數不相同,則數組長度不能省略。例如,想定義數組長度為10,就不能省略數組長度的定義,而必須寫成

  

只初始化前5個元素,后5個元素為0。

【例2-21】根據圖2-15所示電路,寫一程序控制發光二極管先依次亮,然后依次滅。

圖2-15 電路

  

主站蜘蛛池模板: 寿阳县| 资兴市| 福泉市| 漳浦县| 托里县| 和龙市| 青铜峡市| 凤阳县| 德州市| 攀枝花市| 新巴尔虎左旗| 凌云县| 巧家县| 沙河市| 博爱县| 慈利县| 思南县| 云龙县| 沙坪坝区| 红安县| 邛崃市| 中牟县| 全椒县| 长海县| 岳普湖县| 凤翔县| 建宁县| 望都县| 义马市| 阿巴嘎旗| 共和县| 南安市| 灌阳县| 福州市| 唐河县| 雅安市| 法库县| 无棣县| 台湾省| 临安市| 沅陵县|