欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

【C Primer PLus 摘錄】第 10 章 數(shù)組和指針(未完)

C Primer Plus 摘錄

第 10 章 數(shù)組和指針

10.1 數(shù)組

  • 數(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)始。

10.1.1 初始化數(shù)組

  • 用以逗號(hào)分隔的值列表(用花括號(hào)括起來(lái)) 來(lái)初始化數(shù)組,各值之間用逗號(hào)分隔。
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ù)。

10.1.2 指定初始化器(C99)

  • 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, 那么后面這些值將被用于初始化指定元素后面的元素。
  • 第二, 如果再次初始化指定的元素, 那么最后的初始化將會(huì)取代之前的初始化。 如開(kāi)始時(shí)把 days[1] 初始化為 28, 但是 days[1] 又被后面的指定初始化 [1] = 29 初始化為 29。
int days[MONTHS] = { 31, 28, [4] = 31, 30, 31, [1] = 29 };

10.1.3 給數(shù)組元素賦值

  • 聲明數(shù)組后, 可以借助數(shù)組下標(biāo)(或索引) 給數(shù)組元素賦值。

10.1.4 數(shù)組邊界

  • 在使用數(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é)果很奇怪, 或異常中止。

10.1.5 指定數(shù)組的大小

  • 在C99標(biāo)準(zhǔn)之前, 聲明數(shù)組時(shí)只能在方括號(hào)中使用「整型常量表達(dá)式」。 所謂整型常量表達(dá)式, 是由整型常量構(gòu)成的表達(dá)式。
  • sizeof 表達(dá)式被視為整型常量, 但是(與C++不同) const 值不是。 另外, 表達(dá)式的值必須大于 0
int 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之前不允許
  • C99標(biāo)準(zhǔn)允許這樣聲明, 這創(chuàng)建了一種新型數(shù)組, 稱為變長(zhǎng)數(shù)組(variable-length array) 或簡(jiǎn)稱 VLA(C11 放棄了這一創(chuàng)新的舉措, 把VLA設(shè)定為可選, 而不是語(yǔ)言必備的特性)。
  • C99引入變長(zhǎng)數(shù)組主要是為了讓C成為更好的數(shù)值計(jì)算語(yǔ)言。

10.2 多維數(shù)組

  • 多維數(shù)組是這樣一種數(shù)組,它是一種數(shù)組,它的每個(gè)元素也是包含指定元素?cái)?shù)量的數(shù)組。
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)

外貿(mào)網(wǎng)站建設(shè)