數(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)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
內(nèi)存
+關(guān)注
關(guān)注
9文章
3209瀏覽量
76358 -
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
71843 -
數(shù)組
+關(guān)注
關(guān)注
1文章
420瀏覽量
27351
原文標題:數(shù)組名是不是指針
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
C語言數(shù)組名和指針
指針是C/C++語言的特色,而數(shù)組名與指針有太多的相似,甚至很多時候,數(shù)組名可以作為指針使用。于是乎,很多程序設(shè)計者就被搞糊涂了。而許多的大
發(fā)表于 08-27 17:48
?1141次閱讀
C語言中指針數(shù)組和數(shù)組指針的區(qū)別
指針和數(shù)組之間存在著緊密的關(guān)系。在本文中,我們將探討指針和數(shù)組的關(guān)系、指針算術(shù)和數(shù)組遍歷、多維
發(fā)表于 08-17 15:29
?901次閱讀
從編譯器角度分析C語言中數(shù)組名和指針的區(qū)別
。也許這樣的聲明可以編譯通過(在gcc下通過了),但是把一個數(shù)組名當(dāng)成一個指針來使用,別指望它能運行起來。第二,指針是一個變量,而數(shù)組名不是
發(fā)表于 06-23 23:36
C語言——指針、數(shù)組和函數(shù)
C語言——指針、數(shù)組和函數(shù)基本解釋 1、指針的本質(zhì)是一個與地址相關(guān)的復(fù)合類型,它的值是數(shù)據(jù)存放的位置(地址);數(shù)組的本質(zhì)則是一系列的變量。 2、
發(fā)表于 04-20 15:25
C語言中指針與數(shù)組
#define SIZE 10int arry[SIZE]={0,1,2,3,4,5,6,7,8,9}; //數(shù)組名arry表示數(shù)組首元素的地址*int p,temp;//可直接初始化定義指針
發(fā)表于 01-13 13:11
?3次下載
C語言指針和數(shù)組的區(qū)別
在C語言教程中我們使用通過數(shù)組名通過偏移和指針偏移都可以遍歷數(shù)組,那么指針和數(shù)組到底有什么區(qū)別??
C語言數(shù)組元素的指針
C語言調(diào)用函數(shù)時虛實結(jié)合的方法都是采用“值傳遞”方式,當(dāng)用變量名作為函數(shù)參數(shù)時傳遞的是變量的值,當(dāng)用數(shù)組名作為函數(shù)參數(shù)時。
由于數(shù)組名代表的是數(shù)組元素地址,因此傳遞的值是地址,所以要去形參為
C++數(shù)組名和數(shù)組拷貝詳解
C++數(shù)組間賦值不能直接通過數(shù)組名稱 randy = sesame進行,因為數(shù)組名并不是指針,大部分情況下,編譯器會隱式轉(zhuǎn)換為指向
發(fā)表于 08-21 15:09
?891次閱讀
數(shù)組與指針不能混用的情況
和指針的基本概念。數(shù)組是一組相同類型的元素的集合,而指針是一個變量,它存儲了一個地址,該地址指向內(nèi)存中的某個位置。在 C/C++ 中,數(shù)組名稱可以當(dāng)作指向
面試常考+1:函數(shù)指針與指針函數(shù)、數(shù)組指針與指針數(shù)組
在嵌入式開發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針和指針數(shù)組是一些非常重要但又容易混淆的概念。理解它
數(shù)組名之間可以直接賦值嗎
; ????return 0;} 想把數(shù)組 a 里面的數(shù)據(jù)全部賦值給 b,寫成 b = a 行不行? 和這個問題類似的還有,數(shù)組名為什么不能進行 ++ 操作? char?array[5]?=?{0};array++; 比如
數(shù)組名是不是指針
評論