知識(shí)分享:C語言知識(shí)干貨系列——數(shù)組篇
前面了解了c 語言的基礎(chǔ)部分,下面在對(duì)它進(jìn)行一個(gè)深入的了解吧!

數(shù)組
1,一維數(shù)組
數(shù)組是用來干嘛的呢?就像我們之前所說的變量一樣,它是用來存儲(chǔ)數(shù)據(jù)的。那它和變量存儲(chǔ)數(shù)據(jù)有什么不同呢?
顯然一個(gè)變量只能保存一份數(shù)據(jù),在程序數(shù)據(jù)量小的情況下,使用起來比較方便。但是對(duì)于大規(guī)模的數(shù)據(jù),單純的變量就有點(diǎn)單薄了,對(duì)付大規(guī)模的數(shù)據(jù),我們需要更強(qiáng)大的數(shù)據(jù)類型,將眾多的變量凝聚在一起,也就構(gòu)成了數(shù)組。
簡單的來說,數(shù)組就是同一類型數(shù)據(jù)的集合,下面就是定義的簡單數(shù)組并對(duì)其進(jìn)行初始化:
下面通過一個(gè)綜合的小案例來加深一下對(duì)數(shù)組的基本操作。
最后呢,對(duì)于數(shù)組的操作我們一定要切記不要越界訪問,以免訪問到數(shù)組之外的內(nèi)存區(qū)域。
2,數(shù)組作為函數(shù)參數(shù)
C 語言允許將數(shù)組作為函數(shù)的參數(shù),即可以將數(shù)組名作為函數(shù)的實(shí)參進(jìn)行傳遞??梢栽趨?shù)名后面加上中括號(hào)的形式,表示該參數(shù)是一個(gè)數(shù)組類型。如下就是一個(gè)以數(shù)組為參數(shù)的函數(shù)PArray:
3,字符數(shù)組
C 語言中,幾乎所有的數(shù)據(jù)類型都可以被定義為數(shù)組。由于數(shù)組可以用來存儲(chǔ)字符串,因此字符數(shù)組在C 語言中的運(yùn)用極為廣泛。
雖然C 語言中沒有字符串這種數(shù)據(jù)類型,但它的運(yùn)用卻極為普遍,比如我們?nèi)胧值牡谝粋€(gè)程序"hello world"。注意到,它是用雙引號(hào)括起來的一段字符序列。另外,字符串還有一個(gè)重要的特征:字符串必須以空字符(用轉(zhuǎn)義字符'\0'表示)作為結(jié)尾。即使是字符串常量,也會(huì)隱含地?fù)碛羞@個(gè)空字符。例如:
那我們是否會(huì)想,如何才能將"abc" 這個(gè)字符串存儲(chǔ)到數(shù)組中呢?
在看了上述方法2之后,可能我們就在想如何才能得到一個(gè)字符串的長度是嗎?
對(duì)于字符串,它除了有大小之外,還有長度的概念。我們這里就簡單的區(qū)分一下:
字符串的大小指的是字符串所占內(nèi)存的字節(jié)數(shù),使用sizeof()庫函數(shù)計(jì)算得出,而字符串長度則是指字符串中有效字符的個(gè)數(shù),用strlen()庫函數(shù)計(jì)算得出。所謂有效字符,就是除去作為結(jié)尾標(biāo)記的空字符以外的字符。
4,二維數(shù)組
啊,五環(huán),你比六環(huán)少一環(huán)~,顧名思義,二維數(shù)組就是在一維數(shù)組的基礎(chǔ)上多了一維,簡單的說就是多了一個(gè)"[ ]"。
至于對(duì)二維數(shù)組的初始化,與一維數(shù)組的初始化類似,下面就提一下行初始化方式:
前面說過一維數(shù)組可以作為函數(shù)參數(shù),那類比一下,二維數(shù)組肯定也可以作為參數(shù)來進(jìn)行函數(shù)調(diào)用。與一維數(shù)組作為函數(shù)參數(shù)時(shí)需要在參數(shù)名跟上一對(duì)中括號(hào)類似,二維數(shù)組需要兩對(duì)中括號(hào),其中第一對(duì)中括號(hào)用于表示第一維的大小,其值可以被省略,即使用空中括號(hào)形式;第二對(duì)中括號(hào)用于表示第二維的大小,其值不可被省略,即必須指明第二維的大小。下面是一個(gè)打印二維數(shù)組所有元素的函數(shù)例子:
最后,我們可以用這樣的思想來理解一下C 語言中的數(shù)組:
由普通元素(變量)構(gòu)成的數(shù)組,是一維數(shù)組,即一維數(shù)組是普通元素(變量)的數(shù)組。
由一維數(shù)組構(gòu)成的數(shù)組,是二維數(shù)組,即二維數(shù)組是一維數(shù)組的數(shù)組。
由二維數(shù)組構(gòu)成的數(shù)組,是三維數(shù)組,即三維數(shù)組是二維數(shù)組的數(shù)組。
.......
理解了數(shù)組的嵌套,再去理解指針與數(shù)組的關(guān)系,就會(huì)比較輕松了 ~ ~
實(shí)踐中回顧(總結(jié))
理解并掌握數(shù)組,會(huì)為后面的知識(shí)擴(kuò)展打下堅(jiān)實(shí)的基礎(chǔ)。而真正掌握數(shù)組不能光靠理論知識(shí),而是要更多的去實(shí)踐,比較經(jīng)典的題目有矩陣轉(zhuǎn)置和冒泡排序,下面就用一個(gè)經(jīng)典的冒泡排序算法的實(shí)現(xiàn)來對(duì)數(shù)組的知識(shí)進(jìn)行回顧。
編寫程序,在數(shù)組中保存1~100的10個(gè)隨機(jī)整數(shù),對(duì)數(shù)組進(jìn)行升序排序,并將排序后的數(shù)組元素打印輸出,代碼如下:
好了,經(jīng)過上面的回顧,大家是否對(duì)C 語言中的數(shù)組有了一個(gè)更深的印象了呢?
持續(xù)分享中······
作者:博客園丨Charmchin
寫在最后:對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號(hào):C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
