定义整型数组_C语言基础-数组怎么用
到目前為止,我們了解到C語言中可以使用整型,浮點型和字符型的數(shù)據(jù)類型來描述我們?nèi)祟愂澜绲母鞣N數(shù)據(jù),但是這些還遠(yuǎn)遠(yuǎn)不夠……
我們在IOT領(lǐng)域經(jīng)常會遇到這樣一個數(shù)據(jù)使用場景:某天的固定時間內(nèi),會有多臺(我們假定100臺)IOT終端上報某種類型的信息(我們假定是0-100°范圍內(nèi)的溫度探測值)。現(xiàn)在知道了基本的數(shù)據(jù)類型,選擇unsigned char類型存儲一臺終端上報的溫度值就可以。但是如果這個設(shè)備是100臺呢?下面的定義方式貌似可行:
但是要是這個數(shù)量變得更多,比如1000臺的時候呢?咱們肯定會問,C語言中就沒有一種類似容器一樣的方案,可以通過某種機(jī)制去查找到指定的存放位置,從而節(jié)省定義數(shù)據(jù)需要的代碼行數(shù)呢?答案是有的,而且這種C語言的數(shù)據(jù)類型就是我們前面曾經(jīng)提到的-數(shù)組類型。
【預(yù)備知識-索引】
索引,英文名index。通俗的講,就是容器內(nèi)每個數(shù)據(jù)的位置標(biāo)簽。用戶可以通過這些不同的位置標(biāo)簽,找到對應(yīng)位置存儲的數(shù)據(jù)。
索引0對應(yīng)數(shù)據(jù)11,索引3對應(yīng)數(shù)據(jù)44。在C語言中,所有的索引均從0開始計數(shù),逐次加1。
【一維數(shù)組】
以上面100臺IOT設(shè)備上報溫度值場景為例,一維數(shù)組的定義方式如下:
數(shù)組元素的引用:
有了索引,我們可以找到100臺設(shè)備中任何一臺設(shè)備的對應(yīng)值。比如:
數(shù)組的初始化:
- 部分初始化:
unsigned char SensorTemp[100] = {1,10,11,22};
注: 因為初始化值只有4個,只能完成對索引0,1,2,3四個元素進(jìn)行賦值
- 逐個初始化:
SensorTemp[0] = 1;
SensorTemp[1] = 10;
SensorTemp[2] = 11;
SensorTemp[4] = 22;
- 全部初始化:
unsigned char SensorTemp[4] = {1,10,11,22};
如果出現(xiàn)如下未給定數(shù)組長度情況,則認(rèn)為數(shù)組SensorTemp的長度為給定數(shù)據(jù)的個數(shù):
unsigned char SensorTemp[ ] = {1,10,11,22,33};
【二維數(shù)組】
解決了100臺設(shè)備數(shù)據(jù)存儲的問題,我們再提一個新的問題:如果需要我們上午和下午各存儲一次,如何實現(xiàn)呢?
“再創(chuàng)建一個新的100個元素的數(shù)組不就解決了嘛”,很多朋友可能會提出這樣的方案。沒錯,但是當(dāng)每天的采集點很多呢,難道還要繼續(xù)這樣做么?
其實不需要的。C語言在數(shù)組的維度上進(jìn)行了擴(kuò)展,即可以定義高維度數(shù)組。對于該問題,我們可以考慮將01-06的采樣時間點作為一個新的維度,重新定義一個二維的數(shù)組來解決這個新的問題。
具體這個二維數(shù)組里,數(shù)據(jù)的存放和二維數(shù)組中各個數(shù)據(jù)元素的含義如下圖所示:
具體來看,二維數(shù)組的元素引用方式依然采用索引方式,只不過這次是兩個索引值。對于二維數(shù)組,可以將它想象成為一個矩陣形式,矩陣的行數(shù)由第一維長度決定,矩陣的列數(shù)由第二維長度決定。同樣,二維矩陣的初始化與一維矩陣類似,不再詳述。
【字符數(shù)組和字符串】
上面的例子中,我們存儲的都是具體的整型數(shù)據(jù),但是往往在生活中,存儲的數(shù)據(jù)也不乏字符串。比如經(jīng)典的“Hello world”。有人會說,那我一個char一個char的輸出不是也可以么?當(dāng)然可以!但是,與本章中提出的第一個問題類似,當(dāng)字符越來越多的時候,你還考慮一個char一個char的打印么?
既然整型都可以使用數(shù)組技術(shù),那么字符型呢?答案是肯定的。
- 注:我們需要重點關(guān)注最后的0字符。
- 這個字符占用數(shù)組元素一個索引計數(shù)
- 這個字符要么初始化的時候主動賦值,要么系統(tǒng)添加,所以一定要注意定義的字符數(shù)組長度
- 這個字符的作用:C語言中,認(rèn)定該字符為字符串結(jié)束的標(biāo)志
【后記】
C語言中的重頭戲,指針和指針數(shù)組,我們還是往后放放,這么早提指針,還是容易有心理壓力。
其實對于數(shù)組,只要記住:第一,數(shù)組就是個數(shù)據(jù)存儲容器;第二,里面的元素都一樣的數(shù)據(jù)類型;第三,不管一維還是高維,拿索引檢索就好。
總結(jié)
以上是生活随笔為你收集整理的定义整型数组_C语言基础-数组怎么用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧普照明吸顶灯可以打孔吗?
- 下一篇: 编写一个能够排序的函数模板。_LeetC