數(shù)組就是指針,指針就是數(shù)組,這樣的言論在評(píng)論區(qū)看到不下于10次。
翻開《C專家編程》,來(lái)到第四章,標(biāo)題非常醒目:
令人震驚的事實(shí),數(shù)組和指針并不相同。
之前的視頻我們講過(guò),數(shù)組可以用指針來(lái)表示,指針也可以用數(shù)組的形式來(lái)訪問(wèn),今天再來(lái)盤點(diǎn)一下,數(shù)組和指針有哪些區(qū)別。
第一個(gè)聲明的方式不一樣。
比如在 1.c 文件中定一個(gè)全局?jǐn)?shù)組:
如果想在 2.c 文件中使用,那么只能寫成這樣:
extern int array[];
如果寫成:
extern int *array;
程序就會(huì)崩潰。
雖然編譯沒(méi)有問(wèn)題,但是運(yùn)行的時(shí)候,array 可能就是個(gè)空指針。
第二個(gè)訪問(wèn)的方式也不一樣。
對(duì)于數(shù)組來(lái)說(shuō),先是取下標(biāo)的值,然后跟數(shù)組首元素的地址相加,最后取對(duì)應(yīng)地址里面的內(nèi)容。
指針則是先取指針變量里面的地址,然后再取對(duì)應(yīng)地址里面的內(nèi)容。
第三個(gè)也是它們最本質(zhì)的區(qū)別,數(shù)組用于保存數(shù)據(jù),指針用于保存數(shù)據(jù)的地址。
第四個(gè)使用場(chǎng)景不同。
指針常用于動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),配合 malloc 和 free 函數(shù),根據(jù)實(shí)際情況分配和釋放內(nèi)存;數(shù)組通常用于存儲(chǔ)固定數(shù)目,且數(shù)據(jù)類型相同的元素,內(nèi)存一般隱式分配和刪除。
數(shù)組和指針,日常使用中盡管看上去一樣,但是底層實(shí)現(xiàn)的機(jī)制卻不同。
審核編輯:劉清
-
數(shù)組
+關(guān)注
關(guān)注
1文章
411瀏覽量
25858
原文標(biāo)題:令人震驚的事實(shí):數(shù)組和指針并不相同
文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論