【持續(xù)更新】C語言 第六天學習筆記(數(shù)組上)

一澄成、【掌握】數(shù)組簡介

思考:

     蒼老師的班級里有5個學生暖哨,這次參加了語文考試,寫一個程序把這5個人的成績保存起來培慌,怎么做呢豁陆?

我們發(fā)現(xiàn),如果用一個變量來接收成績吵护,變量始終保存的是最后一次的輸入盒音。如果用5個變量來保存,代碼會比較多而且很不利于擴展馅而,萬一以后學生有500人呢祥诽?

所以,我們迫切地需要有一種變量瓮恭,能夠保存好多個不同的值雄坪。

這種變量,就叫數(shù)組屯蹦!

數(shù)組的定義格式:

數(shù)據(jù)類型   數(shù)組名[可以存儲的數(shù)據(jù)個數(shù)]

語義:數(shù)據(jù)類型給出了這個數(shù)組只能存什么類型的數(shù)據(jù)维哈,后面中括號[]里面填的是正整數(shù),表示這個數(shù)組可以存放多少個這種類型的數(shù)據(jù)

例:int arr[10]
代表這個數(shù)組只能存10個int類型的數(shù)據(jù)

其他類型的數(shù)組

char arr[5];
float arr[5];
double arr[5];

數(shù)組在內存中的存儲形式:(簡易形象版)

內存中的存儲形式

解釋:
1.先在內存中開辟一段空間

2.然后把這段空間N等份(如果你要存3個就劃分為3等份)

3.這3個小空間的類型根據(jù)你之前申明的類型確定

4.實際存數(shù)據(jù)的就是這些小空間

數(shù)組的三個專業(yè)術語:

1.元素:數(shù)組之中劃分的小空間里存的數(shù)據(jù)颇玷,就叫元素

2.下標/索引:為了區(qū)分每個小空間笨农,給每個小空間都從0開始,依次遞增1的做了編號帖渠,這個編號就叫做數(shù)組的下標/索引

3.長度:就是數(shù)組可以存儲多少個數(shù)據(jù)谒亦,一般在申明的時候就給出了長度,比如int arr[3]空郊,代表這個數(shù)組的長度為3份招,可以存放3個數(shù)據(jù)

數(shù)組的賦值與取值操作

1) 賦值:

因為數(shù)組中實際存儲數(shù)據(jù)的實際是內存中的每個小空間,所以應該是給小空間里賦值狞甚,那么數(shù)組里也許有多個小空間锁摔,怎么確定給哪個小空間賦值呢?通過下標來賦值

語法:

數(shù)組名[下標]
= 數(shù)據(jù)哼审;

例:

int arr[5];

arr[0]
= 10; //代表給數(shù)組中第一個元素賦值

注意:

賦值的時候谐腰,元素的下標千萬不要越界(即超過數(shù)組的小空間編號),編譯器不會報錯涩盾,但是實際使用時可能會出不可預知的錯誤

2)取值:

因為數(shù)組中的數(shù)據(jù)是存在每一個小空間里的十气,那么多小空間,我們到底要取哪一個呢春霍?所以這時也需要通過下標來確定

語法:

數(shù)組名[下標];

例:

int arr[3];

arr[0] = 10

int num
= arr[0]; //此時num的值為10

注意:

取值的時候下標也千萬不要越界砸西,否則也可能出現(xiàn)未知的錯誤

一般情況下,我們所說的數(shù)組都是指一位數(shù)組,即我們現(xiàn)在所學的這個數(shù)組芹枷。后面還會學習二維數(shù)組和了解一下多維數(shù)組衅疙。

二、【掌握】數(shù)組的詳細使用

1鸳慈、數(shù)組初始化的方法(賦值方法)

1)先定義數(shù)組饱溢,再賦值

例:

int arr[3];

arr[0] = 10;

arr[1] = 15;

arr[2] = 14;

解釋:因為數(shù)組中實際存儲數(shù)據(jù)的實際是內存中的每個小空間,所以應該是給小空間里賦值蝶涩,那么數(shù)組里也許有多個小空間理朋,怎么確定給哪個小空間賦值呢?就是通過數(shù)組的下標來賦值绿聘。所以上面的方法是給小空間一個一個地賦值

2)定義數(shù)組的同時初始化(賦值)

A、完全初始化

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

B次舌、不完全初始化熄攘,沒有提供數(shù)據(jù)的默認初始化為 0

int nums[10] = { 1, 2, 3, 4, 5 };

C、省略數(shù)組長度彼念,由編譯器自動判斷

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

D挪圾、指定元素個數(shù),同時給指定元素進行初始化

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

解釋:以上三種方法都是在數(shù)組申明時直接按順序給每個小空間賦值數(shù)據(jù)。

如圖所示

其他注意:不管是先定義數(shù)組逐沙,還是數(shù)組定義并初始化哲思。只要數(shù)組一經(jīng)定義,里面就有值吩案,里面默認的值都為0(如果是字符型數(shù)組棚赔,那么就是ascii碼中0所對應的字符'\0'即為空)

2、引用元素

什么叫引用元素:

引用數(shù)組元素表示使用數(shù)組中的每一個變量

用法:

使用下標引用數(shù)組中指定的變量

語法:

數(shù)組名[ 下標]

例如:

int  nums[] = { 1, 2, 3 };

printf("%d\n",
nums[0]);

printf("%d\n",
nums[1]);

printf("%d\n",
nums[2]);

 

引用數(shù)組元素和使用指定類型變量一樣徘郭,可以讀取數(shù)據(jù)賦值等

1)讀取數(shù)據(jù)

2)獲取數(shù)據(jù)(打印靠益,計算)

3)自增等

3、遍歷數(shù)組元素

遍歷的意思:就是訪問每一個元素

使用 for 循環(huán)對數(shù)組進行遍歷

for
(int i = 0; i < length; i++) {

printf("%d\n",
nums[i] );

}

三残揉、【掌握】數(shù)組的越界

1胧后、數(shù)組的越界

生活中的越界

例圖1

數(shù)組中的越界

例圖2

越界訪問的情況:

新版本的xcode編譯不會報錯,運行中會報錯

總結:

一個長度為n的數(shù)組,最大下標為n-1,
下標范圍:0~n-1

精華:不要亂約別人的女朋友(訪問自己不該訪問的內存)抱环,否則后果很嚴重(運行異常)

【理解】數(shù)組練習

1壳快、蒼老師的班級里有10個學生,現(xiàn)要求輸入每個學生的成績镇草,算出總分是多少眶痰,平均值是多少,最高分和最低分

2陶夜、假設有數(shù)組int a[10] = {1,2,3,4,5,6,7,8,9,10}凛驮,按照從第一個元素到最后一個元素輸出(遍歷)元素值,然后再從最后一個元素到第一個元素輸出(遍歷)元素值

3条辟、讓用戶輸入數(shù)組的長度黔夭,然后再依次讓用戶輸入這個數(shù)組的每一個元素的值宏胯,最后再遍歷這個數(shù)組

4、在一個數(shù)組中查找指定元素第一次出現(xiàn)的下標本姥,如果沒有這個元素就打印-1

四肩袍、【掌握】數(shù)組作為函數(shù)的參數(shù)

思考:

如果有一個函數(shù),需要傳入一個int類型的參數(shù)婚惫,那么氛赐,
我們能不能把一個int類型的數(shù)組的元素傳過去呢?

答案是可以的先舷。

當有一個元素需要傳入基本類型(int,long,float,double,char等)的數(shù)據(jù)作為參數(shù)時艰管,
可以傳入同類型的數(shù)組的元素,如果類型不一致時會發(fā)生強制轉換蒋川。
因為數(shù)組的元素就相當于是某一類型的變量值牲芋。

1、數(shù)組元素作函數(shù)實參

數(shù)組元素就是下標變量,它與普通變量并無區(qū)別捺球。
因此它作為函數(shù)實參使用與普通變量是完全相

同的,在發(fā)生函數(shù)調用時,把作為實參的數(shù)組元素的值傳送給形參,實現(xiàn)單向的值傳送缸浦。

如圖所示
思考&實現(xiàn)1:

判別一個整數(shù)數(shù)組中各元素的值,若大于0 則輸出該值,若小于 等于0則輸出0值(判斷過程使用函數(shù)實現(xiàn))

代碼

2、數(shù)組名作為函數(shù)參數(shù)

當函數(shù)的形參是一個數(shù)組時氮兵,那么我們的實參必須傳入一個數(shù)組(數(shù)組名)

如圖所示

注意:此時在函數(shù)內部改了某個元素的值裂逐,外部數(shù)組元素也會發(fā)生改

如下圖

如圖所示

這是為什么呢?
具體原因涉及到指針的概念泣栈,明天解釋卜高,今天大家只要知道當數(shù)組作為實參傳入函數(shù)時,在函數(shù)內部對數(shù)組元素進行修改秩霍,外部的數(shù)組也會收到影響篙悯!

思考:如果要寫一個函數(shù),函數(shù)的功能是將傳入的int類型數(shù)組中每個元素都加10铃绒,怎么做鸽照?

常規(guī)思考如下:


常規(guī)思考

根據(jù)我們所學的內容會發(fā)現(xiàn):由于當數(shù)組作為函數(shù)形參時,外部可以傳入任意長度的數(shù)組颠悬,那么在函數(shù)內部中就不好處理了矮燎,循環(huán)次數(shù)寫大了會造成越界,寫小了會造成不能充分地操作每一個元素赔癌,那么怎么辦呢诞外?

解決之道:
一般當函數(shù)形參是一個數(shù)組時,還會再加一個參數(shù)用來傳入數(shù)組的長度灾票。

如圖所示

但是峡谊,這種方法需要程序員能完整記得自己定義這個數(shù)組時給的長度,這樣十分不科學。如果哪天定義數(shù)組后又寫了很長一段代碼才開始調用函數(shù)既们,這時程序員要回過頭找定義數(shù)組的長度很費時間濒析,那么有沒有一種方法幫我們解決呢?

解決之道:sizeof(數(shù)組名) / sizeof(類型)

例:int arr[3] = {1,2,3}; sizeof(arr) / sizeof(int)

解釋:由于數(shù)組是由多個同類型的小空間組成啥纸,所以只要先算出數(shù)組占用內存的總大小再除以每個空間占用的大小号杏,就可以得到有多少個小空間(元素)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市斯棒,隨后出現(xiàn)的幾起案子盾致,更是在濱河造成了極大的恐慌,老刑警劉巖荣暮,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庭惜,死亡現(xiàn)場離奇詭異,居然都是意外死亡穗酥,警方通過查閱死者的電腦和手機蜈块,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迷扇,“玉大人,你說我怎么就攤上這事爽哎◎严” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵课锌,是天一觀的道長厨内。 經(jīng)常有香客問我,道長渺贤,這世上最難降的妖魔是什么雏胃? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮志鞍,結果婚禮上瞭亮,老公的妹妹穿的比我還像新娘。我一直安慰自己固棚,他們只是感情好统翩,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著此洲,像睡著了一般厂汗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呜师,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天娶桦,我揣著相機與錄音,去河邊找鬼。 笑死衷畦,一個胖子當著我的面吹牛栗涂,可吹牛的內容都是我干的。 我是一名探鬼主播霎匈,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼戴差,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铛嘱?” 一聲冷哼從身側響起暖释,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎墨吓,沒想到半個月后球匕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡帖烘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年亮曹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秘症。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡照卦,死狀恐怖,靈堂內的尸體忽然破棺而出乡摹,到底是詐尸還是另有隱情役耕,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布聪廉,位于F島的核電站瞬痘,受9級特大地震影響,放射性物質發(fā)生泄漏板熊。R本人自食惡果不足惜框全,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望干签。 院中可真熱鬧津辩,春花似錦、人聲如沸筒严。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸭蛙。三九已至摹恨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娶视,已是汗流浹背晒哄。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工睁宰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寝凌。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓柒傻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親较木。 傳聞我的和親對象是個殘疾皇子红符,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內容