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