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