我有一個非常簡單的問題,但它讓我困惑了一下ç數組索引
例如:
int a[] = {0,1,2,3,4,5,6,7,8,9};
我有一個問題問的價值是什麼:一個+ 3是
簡單的問題,我嘗試的只是添加3個點,所以數組將從2開始。
我有一個非常簡單的問題,但它讓我困惑了一下ç數組索引
例如:
int a[] = {0,1,2,3,4,5,6,7,8,9};
我有一個問題問的價值是什麼:一個+ 3是
簡單的問題,我嘗試的只是添加3個點,所以數組將從2開始。
如果你只是引用a
,它是一個指向數組的第一個元素的指針,所以一個[0] - 即一個類型爲int *
的指針。在大多數情況下添加到陣列相當於添加到這樣一個指針,所以a+3
將引用a[3]
或在您的情況下值3。
很好的答案。謝謝!我現在明白了。基本上只是詢問陣列a + 3中指的是什麼值,但我現在明白了。欣賞它! – user41580
如果陣列a
的起始地址爲1000
然後a+3
會給你1000 + 3*4
,即1012
(假設int
是4
字節)。這是因爲數組名被腐蝕以指向其第一個元素。
解引用a + 3
(它是指向數組的第四個元素的指針)將給出3
(數組的第四個元素)。
a + 3
的值是int *
類型指向的a[3]
存儲器位置的指針值 - 包含在您的示例值3
一個數組元素。這是你問的問題的直接答案。這是你想聽到的嗎?
P.S.目前尚不清楚「陣列將從2開始」是什麼意思。 「2」來自哪裏?
我在說他指的是他的數組中的第三個元素,但它確實不清楚。 – ApproachingDarknessFish
@ValekHalfHeart:好吧,從1開始計數,'a + 3'會指向數組的*第四個元素,即3,而不是2。 – AnT
如果你想要的「一」,則陣列充當指針和指向的數組即一個一個[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.
「a + 3」的值是什麼意思?有一些你指的是特定的代碼嗎? –