指针和数组的区别是什么?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 指針和數(shù)組的區(qū)別是什么?
其實數(shù)組是一個地址,指針則是指向地址的地址。
舉個例子:
char array[10];的含義是,在內(nèi)存里開辟一個10個字節(jié)的空間用來存放數(shù)據(jù),其中array是這個空間的頭地址,正如剛才所說,數(shù)組是一個地址。
????
char *pt;的含義是,只是定義一個指針pt,這個指針可以指向任意char型的地址,而指向的地址則存放在地址*pt中,也就是剛才說的指針是指向地址的地址。
????
那么好,pt=array;的意思就是我們把*pt中存放的地址(指針)指向了數(shù)組array[10]的頭地址array,這個時候pt和array辯證的統(tǒng)一了,區(qū)別用通俗的話說就是數(shù)組是地名,指針是路牌。但是別忘了,在這個例子中,數(shù)組實實在在的占用了10個字節(jié)的空間,而指針只占用了4個字節(jié)用來存放地址而已(假設(shè)是32bits系統(tǒng))。
????
最后我們總結(jié)一下區(qū)別:
????
數(shù)組:保存數(shù)據(jù);直接訪問數(shù)據(jù);用于存儲數(shù)目固定且類型相同的數(shù)據(jù);由編譯器自動分配和刪除;自身即為數(shù)據(jù)名。
指針:保存地址;間接訪問數(shù)據(jù)(先取得指針的內(nèi)容,然后以它為地址,取得數(shù)據(jù));通常用于動態(tài)數(shù)據(jù)結(jié)構(gòu);動態(tài)的分配和刪除;通常指向隱式數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的指针和数组的区别是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 说明使用assert和防错代码的区别
- 下一篇: 编写一个自己的完全C语言版本的memse