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