2014-01-28 63 views
0

我有一個非常簡單的問題,但它讓我困惑了一下ç數組索引

例如:

int a[] = {0,1,2,3,4,5,6,7,8,9}; 

我有一個問題問的價值是什麼:一個+ 3是

簡單的問題,我嘗試的只是添加3個點,所以數組將從2開始。

+0

「a + 3」的值是什麼意思?有一些你指的是特定的代碼嗎? –

回答

1

如果你只是引用a,它是一個指向數組的第一個元素的指針,所以一個[0] - 即一個類型爲int *的指針。在大多數情況下添加到陣列相當於添加到這樣一個指針,所以a+3將引用a[3]或在您的情況下值3。

+1

很好的答案。謝謝!我現在明白了。基本上只是詢問陣列a + 3中指的是什麼值,但我現在明白了。欣賞它! – user41580

0

如果陣列a的起始地址爲1000然後a+3會給你1000 + 3*4,即1012(假設int4字節)。這是因爲數組名被腐蝕以指向其第一個元素。
解引用a + 3(它是指向數組的第四個元素的指針)將給出3(數組的第四個元素)。

4

a + 3的值是int *類型指向的a[3]存儲器位置的指針值 - 包含在您的示例值3一個數組元素。這是你問的問題的直接答案。這是你想聽到的嗎?

P.S.目前尚不清楚「陣列將從2開始」是什麼意思。 「2」來自哪裏?

+0

我在說他指的是他的數組中的第三個元素,但它確實不清楚。 – ApproachingDarknessFish

+0

@ValekHalfHeart:好吧,從1開始計數,'a + 3'會指向數組的*第四個元素,即3,而不是2。 – AnT

1

如果你想要的「一」,則陣列充當指針和指向的數組即一個一個[0] 所以讓假設地址的第一個元素的值將是它的地址中的值是0059FE8C,那麼地址a + 3將是0059FE98。

由於每個整數都是4個字節,所以每個0059FE8C + 4 + 4 + 4 = 0059FE98加4。

現在,如果你會爲int a [] = {0,1,2,3,4,5,6,7,8,9}做*(a + 3),那麼這意味着一個[3]具有值3.