陣列的訪問是通過先獲取陣列的首位址,然後通過相對的偏移量來獲取位址,通過位址讀出內容;
指標的訪問形式:假設指標
本身的位址是4624,先是儲存變數是4624的內容,假設是5081,取得i的值算出5081+i的值然後讀取該位址的內容,也就是說指標
訪問陣列的多了一次額外的提取。
指標儲存的是資料的位址,間接來訪問資料,首先獲得是儲存的內容,將其作為位址,然後通過
位址提取資料。而陣列a[i]只是簡單的以a+i為位址取得資料。
int *p[10];因為的優先順序比*高,所以解釋為 指標陣列,意思就是 先是定義乙個陣列,然後前面加int *表示裡面的成員都是int型指標,這就是 指標陣列。陣列每個元素都存放這int型資料的位址,也就是乙個int型指標。還是來看**吧(*^__^*) 。
char*p[5];//定義指標陣列
for(i = 0;i < 5;i++)
我除錯了一下,
p[0]->0x0012fef8 a[0]->0x0012fef8
p[1]->0x0012ff20 a[1]->0x0012ff20
p[2]->0x0012ff48a[3]->0x0012ff48
p為陣列指標,顧名思義就是這個指標存放的就是乙個陣列,這裡的p就是指向的乙個擁有10個元素的整型陣列,
中括號裡面的10就代表它指向的陣列是10元素的。這裡我們定義了乙個二維陣列a,p = a;就將a賦值給了p,從上面的除錯資訊我們能清楚的得出記憶體關係,
a[ 0]: <------p[ 0]
a[1]: <------p[ 1]
這時候p++就是整行元素的大小來加了。
陣列指標和指標陣列
陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...
陣列指標和指標陣列
一 定義 陣列指標 陣列指標 是指向陣列 首元素的位址的 指標,其本質為指標 這個指標存放的是陣列首位址的位址,相當於2級指標,這個指標不可移動 指標陣列 陣列元素為指標的陣列,其本質為陣列。二 舉例 int a 3 4 這個無需多說,就是乙個 二維陣列 int p 4 就相當於int p 4 它就...
陣列指標和指標陣列
這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an ar...