- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
阵列与指标
陣列與指標
您將可以從本章學到以下的主題:
關鍵字:
static
運算子:
* (unary)
如何建立與初始陣列
指標與陣列的關係
撰寫處理陣列的函數
二維陣列
人們會求助電腦做一些事情,諸如追蹤每月開銷、每日降雨量、每季銷售,或是每
星期的體重等等;而企業會求助電腦管理薪水帳冊、存貨清單,以及顧客交易記錄
等等。身為一個程式設計師,無可避免地 ,您必須處理大量且具有關連性的資料。
若以效率和方便性的角度來看,通常使用陣列會是最好的方法。在第六章「C 的控
制敘述:迴圈」中曾經介紹過陣列,而本章將會更加深入地討論這個主題,而且還
會教您如何撰寫陣列處理的函數,這樣的函數可讓模組化程式設計的優點,延伸到
陣列,而且您將能夠瞭解陣列和指標之間有著非常密切的關係。
陣列
請回憶一下,陣列(array )是由一連續且相同資料型態的記憶單位所組成的。若要
使用陣列時,可使用宣告的方式來告知編譯器。在陣列宣告中,它會告訴編譯器此
陣列總共需要多少個記憶單位,以及這些記憶單位屬於哪種資料型態。根據資訊,
C Primer Plus 中文版(第六版)
編譯器就能夠正確地將陣列建立完成。陣列的記憶單位的型態和一般變數相同,現
在,讓我們先來看看這些宣告的範例:
/* some array declarations */
int main(void)
{
float candy[365]; /* array of 365 floats */
char code[12]; /* array of 12 chars */
int states[50]; /* array of 50 ints */
...
}
利用中括號 [ ] 即可辨識 candy 及其他兩項皆為陣列,而在中括號裡的數字,則表
示陣列中的元素個數。
要存取陣列裡的元素,可使用每個元素各自的下標數字來辨別它們,所謂的下標數
字也可稱為索引值(index )。陣列的索引值從 0 開始,因此,candy[0] 就是 candy
陣列的第一個元素,而 candy[364] 則是第 365 個元素。
剛才那些都是先前提過的觀念,現在 ,讓我們來介紹一些新觀念。
初始化
陣列經常用來儲存程式所需的資料。例如,一個具有 12 個元素的陣列,可儲存一
年當中每個月各有多少天。像這樣的情形 ,在程式的一開始就將整個陣列初始化,
將會比較方便。接下來,讓我們看看如何將陣列初始化。
初始一個單一數值的變數也可使用運算式,例如:
int fix = 1;
float flax = PI * 2;
正如您所預期的,先前 PI 已經像巨集一樣被定義好了。C 將這種初始方式延伸到陣
列,並使用一種新的語法,如下:
int main(void)
{
int powers[8] = {1,2,4,6,8,16,32,64}; /* ANSI C and later */
...
}
由此可知,使用大括號,並以逗號隔開的數值,即可初始一個陣列。如果有需要的
話,在數值和逗號之間還可使用空白。第一個元素(power[0] )被指定為數值 1 、
第二個元素被指定為數值 2 ,…,以此類推。(如果您的編譯器以語法錯誤,拒絕
這種初始格式的話,可能您所用的是 ANSI 之前的編譯器。此時請在陣列宣告前加
10-2
Chapter 10 陣列與指標
上 static 關鍵字,應該就可以解決這個問題。在第12 章「儲存類別、連結和記憶體
管理」中,我們將會討論到這個關鍵字。)
範例 10.1 是一個可輸出每月有幾天的小程式。
範例 10.1 day_mon1.c
/* day_mon1.c -- prints the days for each month */
#incl
原创力文档


文档评论(0)