數(shù)組到底是不是指針?這個(gè)問題隔三岔五就會(huì)被問一遍。其實(shí)只要搞清楚他們的原理,并且能熟練的使用,完全沒有必要糾結(jié)這個(gè)問題。
數(shù)組是內(nèi)存中的一塊連續(xù)內(nèi)存,之所以他能跟指針扯上關(guān)系,是因?yàn)閿?shù)組名表示了數(shù)組第一個(gè)元素的地址,于是很多同學(xué)就認(rèn)為數(shù)組名是指針。
準(zhǔn)確的講,數(shù)組名也只是個(gè)標(biāo)識符,方便用戶使用罷了。
把它理解成地址常量更合適一些。
所以對數(shù)組名加加這個(gè)操作,編譯器是不允許的。
int array[5] = {1, 2, 3, 4, 5}; array++;但是訪問元素的時(shí)候,只要你不去修改數(shù)組名,用起來跟指針沒什么區(qū)別。
int array[5] = {1, 2, 3, 4, 5}; *(array + 1);
指針在計(jì)算機(jī)里面也是一塊內(nèi)存,不過只是一個(gè)單獨(dú)的元素,不像數(shù)組,可以由多個(gè)元素組成。一般占4字節(jié)或者8字節(jié)。它里面保存的是其他內(nèi)存的地址。
所以指針用起來就比較靈活,在合法的情況下,可以來回移動(dòng)。
如果現(xiàn)在有個(gè)數(shù)組,把數(shù)組第一個(gè)元素的地址保存在指針里面,那訪問數(shù)組元素既可以用取值的方式,又可以用數(shù)組下標(biāo)的方式。
int array[5] = {1, 2, 3, 4, 5}; int*p=array; p[1]; *(p + 1);
總結(jié)一下,數(shù)組和指針是兩個(gè)不同的東西,嚴(yán)格來講,不能把數(shù)組等同于指針,包括數(shù)組名,也不能等價(jià)于指針,只是很多場景下,他們可以互相表示。
作為初學(xué)者,我也不太建議去糾結(jié)這樣的問題,這個(gè)問題也只有在面試的時(shí)候會(huì)遇到,學(xué)習(xí)的時(shí)候,把他們原理搞清楚,能正確的使用數(shù)組名或者指針去訪問數(shù)據(jù),也就足夠了。
審核編輯:湯梓紅
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3025瀏覽量
74056 -
指針
+關(guān)注
關(guān)注
1文章
480瀏覽量
70564 -
數(shù)組
+關(guān)注
關(guān)注
1文章
417瀏覽量
25947
原文標(biāo)題:數(shù)組名是不是指針
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論