1、指標陣列
首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是「儲存指標的陣列」的簡稱。
2、陣列指標
首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是「指向陣列的指標」的簡稱。
//下面到底哪個是陣列指標,哪個是指標陣列呢:
a)int
*p1[10];
b)int (*p2)[10];
「」的優先順序比「」要高。p1 先與「」結合,因此我們可以 int *p1[10]; 寫成 int (p1[10]); 陣列元素是包含10個指向int型別的資料指標。
其記憶體布局為
ptr1[-1]:被解析成*(ptr1-1),即ptr1 往後退4 個byte。所以其值為0x4。
ptr2:按照上面的講解,(int)a+1 的值是元素a[0]的第二個位元組的位址。然後把這個位址強制轉換成int*型別的值賦給ptr2,也就是說*ptr2 的值應該為元素a[0]的第二個位元組開始的連續4 個byte 的內容。
其記憶體布局為(暫不考慮大小端問題,按小端處理):
陣列指標 指標陣列 位址的強制轉換記憶體布局
1 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。2 陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣列的指標 的簡稱。下面到底哪個是陣列指標,哪個是...
陣列指標 指標陣列 位址的強制轉換記憶體布局
1 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。2 陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣列的指標 的簡稱。下面到底哪個是陣列指標,哪個是...
printf 指標位址 陣列指標和指標陣列
首先,理解一下陣列指標和指標陣列這兩個名詞 陣列的指標 是乙個指標,什麼樣的指標呢?指向陣列的指標。指標的陣列 是乙個陣列,什麼樣的陣列呢?裝著指標的陣列。然後,需要明確乙個優先順序順序 所以 p n 根據優先順序,先看括號內,則p是乙個指標,這個指標指向乙個一維陣列,陣列長度為n,這是 陣列的指標...