看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 無 因為有個問題一直想不通指標就一直學不下去.. 現在想問一下 int a[]={12,5,3}; 有人說a可當成指標.. 所以 *(a+0)=12 *(a+1)=5 *(a+2)=3 而 &a[0]= a+0 = 存放12的位址暫設成xxx &a[1]= a+1 = 存放5的位址暫設成xxx+1 &a[2]= a+2 = 存放3的位址暫設成xxx+2 可是我一直想不通的問題是 a 到底是不是指標 如果是指標的話..它應該是存著指標的變數.. 但通常存指標的變數也有它的位址.. 而a的位址卻剛好和存放陣列的第一個位址相同 那是否也代表&a=a+0=&a[0]??? 那&a+1是否也等於a+1=&a[1]呢?? 我在Dev C 上 執行 發現 &a[1]=a+1 =\= &a+1 為什麼呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.39.180
james732:你發現了一個指標與陣列最大的不同,它們兩個並不相等 10/04 21:24
james732:只是很多時候行為相同,但有時還是應該當作不同的東西 10/04 21:25
EdisonX:所以不同,像 p+=2 這個在陣列是非法,指標多數合法。 10/04 21:26
james732:順便一提,&a[1]= a+sizeof(int)*1=xxx+sizeof(int)*1 10/04 21:26
stupid0319:又一個陷入指標地獄的人 10/04 21:30
dirkc:陣列是const pointer,所以無法用a+=2這類修改內容的運算 10/04 22:23
maerdimer:陣列不是 pointer......結案![蓋章] 10/04 22:24
s3748679:<~把陣列當作"可以轉成指標的一個大空間特殊型別" 10/04 23:30
acess23:記得老師說 const pointer 10/05 00:52
Favonia:陣列不是指標,當然也不是 const pointer 10/05 06:53
Favonia:只是 C 標準說在好多情況下都會自動轉型成指標 10/05 07:01
bigpigbigpig:指標:哪裡? 陣列:那裡! 10/05 08:44