溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言中的數(shù)組怎么創(chuàng)建和使用

發(fā)布時(shí)間:2022-04-13 10:11:36 來源:億速云 閱讀:709 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“C語言中的數(shù)組怎么創(chuàng)建和使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“C語言中的數(shù)組怎么創(chuàng)建和使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

一維數(shù)組的創(chuàng)建和初始化

1.數(shù)組的創(chuàng)建

數(shù)組是一組相同類型的元素的集合。

2.數(shù)組創(chuàng)建方式 

type_t(數(shù)組類型) arr_name(數(shù)組名) [const_n](用來指定數(shù)組大小)

3.數(shù)組的初始化

數(shù)組的初始化是在其定義的時(shí)候就應(yīng)該執(zhí)行的,如:為5個(gè)已經(jīng)知道的整形數(shù)據(jù)進(jìn)行排序

//正確
int Arr[5] = { 1, 2, 3, 4, 5 };
//而不能用下面這種方式
int Arr[5];
Arr[5] = { 1, 2, 3, 4, 5 };

因?yàn)閷τ?Arr[5] = 來說,這是一個(gè)賦值操作,將右值賦值給左值,一切常數(shù)、字符和字符串都是右值。在這里 { 1, 2, 3, 4, 5 }; 并不是右值的一種,所以這是錯(cuò)誤的。

另一個(gè)錯(cuò)誤是,Arr[5] 下標(biāo)為 5 這個(gè)元素實(shí)際上并不存在的屬于數(shù)組的越界。

有數(shù)字類型的初始化,自然也有字符類型的初始化

字符類型初始化的兩種方式:

char arr[5]={'a','b','c','d','e'};
char arr[5]= "abcde ";

1.空字符是字符串的終止符(空字符本身不是字符串的一部分,所以字符串的長度并不包含空字符)

2.操作字符串時(shí),必須保證字符串以空字符(\0)結(jié)尾(不以空字符結(jié)尾的字符序列,不是字符串)。

一維數(shù)組的使用

C語言中的數(shù)組怎么創(chuàng)建和使用

用單引號(hào)形式初始化的數(shù)組代表只有這些數(shù)據(jù),并且在末端不包含\0

總結(jié)

  • 數(shù)組是使用下標(biāo)來訪問的,下標(biāo)是從0開始。

  • 數(shù)組的大小可以通過計(jì)算得到。

  • Int sz = sizeof(arr)/sizeof(arr[0])

一維數(shù)組的存儲(chǔ)

當(dāng)我們定義了長度為5的整型數(shù)組,操作系統(tǒng)就會(huì)為其分配連續(xù)的五個(gè)內(nèi)存地址。

這些地址用來存放數(shù)據(jù),每一個(gè)地址所占的字節(jié)是數(shù)組的數(shù)據(jù)類型所決定的。 如int類型的每一個(gè)地址占據(jù)著4個(gè)字節(jié),double類型的8個(gè)。

C語言中的數(shù)組怎么創(chuàng)建和使用

因?yàn)槊總€(gè)整形大小為四個(gè)字節(jié),所以如圖每個(gè)地址間隔為4。

講完了一維數(shù)組的知識(shí)點(diǎn),讓我們簡單了解一下二維數(shù)組

二維數(shù)組的創(chuàng)建與初始化 

1.二維數(shù)組的創(chuàng)建

第一個(gè)括號(hào)指定行,第二個(gè)括號(hào)指定列

可以只對部分元素賦值,未賦值的元素自動(dòng)取“零”值。例如:

int arr[3][4]={1,2,3,4,5}

C語言中的數(shù)組怎么創(chuàng)建和使用

2.二維數(shù)組的初始化

C語言中的數(shù)組怎么創(chuàng)建和使用

第一行:123 第二行:45

二維數(shù)組的列不能省略行可以在括號(hào)內(nèi)大括號(hào)分割明確時(shí)省略

二維數(shù)組的存儲(chǔ)

二維數(shù)組在內(nèi)存中的存儲(chǔ)

如果定義一個(gè)這樣的二維數(shù)組int a[3][4]={undefined{1,3,5,7},{9,11,13,15},{17,19,21,23}};則其在內(nèi)存中的表示可能下面這樣的。

C語言中的數(shù)組怎么創(chuàng)建和使用

由上圖可以看出,在內(nèi)存中二維數(shù)組是按照行主序進(jìn)行存儲(chǔ)的,從內(nèi)存的角度上看,二維數(shù)組本質(zhì)就是一個(gè)一維數(shù)組。如果把二維數(shù)組的每一行看成一個(gè)整體,即看成一個(gè)數(shù)組中的一個(gè)元素,那么整個(gè)二維數(shù)組就是一個(gè)一維數(shù)組。而二維數(shù)組的名字代表二維數(shù)組第0行的首地址(注意它是代表一行元素的首地址,而不是第0行第0列元素的首地址,雖然是相等的,但不能這么理解,所以在沒有強(qiáng)制轉(zhuǎn)換的情況下,二維數(shù)據(jù)要么通過行指針進(jìn)行參數(shù)傳遞,要么通過二維指針進(jìn)行參數(shù)傳遞)。 

數(shù)組的越界

這里講的數(shù)組長度存在一個(gè)界,而一旦超過了這個(gè)大小,就會(huì)發(fā)生一些未知的錯(cuò)誤,也就是所謂的越界

這里用一個(gè)例子來說明下越界后數(shù)組內(nèi)部的值的情況:

C語言中的數(shù)組怎么創(chuàng)建和使用

根據(jù)代碼可知,當(dāng)數(shù)組越界后,其數(shù)值是不確定的。

讀到這里,這篇“C語言中的數(shù)組怎么創(chuàng)建和使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI