我們知道,一維數組中,數組內嵌指針,可以將數組名理解爲特殊的指針。
這個指針地址是數組首元素的地址,存取着數組首元素的地址。
數組中地址的劃分與表示是從內存中首個元素頭部開始的。
例如:定義數據類型爲整形的一維數組a:int a[2];
那麼,數組名a就可以看作一個指針,它的的地址就是數組首位元素的地址,即&a[0],他的存取的地址t同樣就是&a[0]。
當對指針a進行指針運算,實際上就是對指針a存取的的地址進行運算。
每當我們進行+1操作時,都是對所存地址添加了四個字節。
爲什麼指針+1對指針所存地址+4字節呢?
其實當初我們在定義數組類型爲int型時,就表明了數組指針+1就是對數組地址加1整型的地址就是4字節32位。
數組取得指定元素內容的原理正是因爲存在這個地址爲數組首元素地址,並且存取首元素地址的指針a。
對a進行指針運算結束後指針a保存的地址就與數組內其他某一元素的地址對應,此時再對指針進行解引用時,我們就可以順着指針保存的地址找到其對應元素的內容了,也可以稱爲指針的指向。
數組下標表示法就是指針運算的另一種表現形式, 即a[1] == *(a + 1),數組下標自動完成對指針的指針運算並且完成解引用。
同樣,我們可以另外定義一個指針p來指向數組從而利用這個指針進行操作。
例如:int *p = &a[0];
不要忘記指針需要存放數組的首地址。