數(shù)組由數(shù)據(jù)類型相同的一系列元素組成。
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),青河網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:青河等地區(qū)。青河做網(wǎng)站價(jià)格咨詢:18980820575
通過(guò)聲明數(shù)組告訴編譯器數(shù)組中內(nèi)含多少元素和這些元素的類型。 編譯器根據(jù)這些信息正確地創(chuàng)建數(shù)組。
float candy[365];
char code[12];
int states[50];
方括號(hào) []
表明candy、 code和states都是數(shù)組, 方括號(hào)中的數(shù)字表明數(shù)組中的元素個(gè)數(shù)。
要訪問(wèn)數(shù)組中的元素, 通過(guò)使用數(shù)組下標(biāo)數(shù)(也稱為索引) 表示數(shù)組中
的各元素。 數(shù)組元素的編號(hào)從 0
開(kāi)始。
int powers[8] = {1,2,4,6,8,16,32,64};
推薦使用宏定義數(shù)組長(zhǎng)度,只需修改 #define
這行代碼即可
要?jiǎng)?chuàng)建只讀數(shù)組, 應(yīng)該用 const
聲明和初始化數(shù)組
const int days[MONTHS] = {31,28,31,30,31,30,31,31,30,31,30,31};
存儲(chǔ)類別警告:數(shù)組和其他變量類似, 可以把數(shù)組創(chuàng)建成不同的存儲(chǔ)類別(storage class),第12章將介紹存儲(chǔ)類別的相關(guān)內(nèi)容。本章描述的數(shù)組屬于自動(dòng)存儲(chǔ)類別
當(dāng)初始化列表中的值少于數(shù)組元素個(gè)數(shù)時(shí), 編譯器會(huì)把剩余的元素都初始化為 0
。
如果初始化列表的項(xiàng)數(shù)多于數(shù)組元素個(gè)數(shù), 編譯器可沒(méi)那么仁慈, 它會(huì)毫不留情地將其視為錯(cuò)誤。
如果初始化數(shù)組時(shí)省略方括號(hào)中的數(shù)字, 編譯器會(huì)根據(jù)初始化列表中的項(xiàng)數(shù)來(lái)確定數(shù)組的大小。
const int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31 };
sizeof days
是整個(gè)數(shù)組的大?。ㄒ宰止?jié)為單位),sizeof day[0]
是數(shù)組中一個(gè)元素的大小(以字節(jié)為單位)。整個(gè)數(shù)組的大小除以單個(gè)元素的大小就是數(shù)組元素的個(gè)數(shù)。C99 增加了一個(gè)新特性: 指定初始化器(designated initializer) 。 利用該特性可以初始化指定的數(shù)組元素。
對(duì)于傳統(tǒng)的C初始化語(yǔ)法,要初始化指定元素,則必須同時(shí)初始化其之前的所有元素。
int arr[6] = {0,0,0,0,0,212}; // 傳統(tǒng)的語(yǔ)法
int arr[6] = {[5] = 212}; // 把a(bǔ)rr[5]初始化為212
[4] = 31,30,31
, 那么后面這些值將被用于初始化指定元素后面的元素。days[1]
初始化為 28, 但是 days[1]
又被后面的指定初始化 [1] = 29
初始化為 29。int days[MONTHS] = { 31, 28, [4] = 31, 30, 31, [1] = 29 };
在使用數(shù)組時(shí), 要防止數(shù)組下標(biāo)超出邊界。 也就是說(shuō), 必須確保下標(biāo)是有效的值。
歸功于 C 信任程序員的原則。 不檢查邊界, C 程序可以運(yùn)行更快。 編譯器不會(huì)檢查數(shù)組下標(biāo)是否使用得當(dāng)。 在C標(biāo)準(zhǔn)中, 使用越界下標(biāo)的結(jié)果是未定義的。 這意味著程序看上去可以運(yùn)行, 但是運(yùn)行結(jié)果很奇怪, 或異常中止。
sizeof
表達(dá)式被視為整型常量, 但是(與C++不同) const
值不是。 另外, 表達(dá)式的值必須大于 0int n = 5;
int m = 8;
float a1[5]; // 可以
float a2[5*2 + 1]; //可以
float a3[sizeof(int) + 1]; //可以
float a4[-4]; // 不可以, 數(shù)組大小必須大于0
float a5[0]; // 不可以, 數(shù)組大小必須大于0
float a6[2.5]; // 不可以, 數(shù)組大小必須是整數(shù)
float a7[(int)2.5]; // 可以, 已被強(qiáng)制轉(zhuǎn)換為整型常量
float a8[n]; // C99之前不允許
float a9[m]; // C99之前不允許
float rain[5][12]; // 內(nèi)含 5 個(gè)元素的數(shù)組, 每個(gè)元素本身是一個(gè)內(nèi)含12個(gè) float 類型值的數(shù)組
上述聲明中 rain[5]
表明 rain
是一個(gè)內(nèi)含 5 個(gè)元素的數(shù)組; float [12]
說(shuō)明每個(gè)元素的類型是 float[12]
rain[i]
是一個(gè)內(nèi)含12個(gè) float 類型值的數(shù)組,因此該數(shù)組的首元素就是 rain[i][0]
,第 2 個(gè)元素是rain[0][1]
,以此類推,要訪問(wèn)第 i 個(gè)數(shù)組的第 j 個(gè)元素(編號(hào)從 0 開(kāi)始)即為 rain[i][j]
網(wǎng)站欄目:【C Primer PLus 摘錄】第 10 章 數(shù)組和指針(未完)
文章URL:http://chinadenli.net/article18/dsoiedp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、網(wǎng)站營(yíng)銷、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)