什麼是指針數組?什麼是數組指針?
簡單的回答就是指針數組就是存的都是指針,而數組指針就是一個指針而已
定義方式:(優先級:()>[]>*)
- 指針數組 int *p[4];
- 數組指針 int (*p)[4]
我們平時定義數組的時候是這樣
int *p = a[4];
這就是指向一個一維數組的指針的頭,*p++就是取出下一位的數組的存放值,p存放的就是數組的頭指針的地址
那麼數組指針呢?
int (*p)[4] = a[4][4];
這裏的指針也僅僅只是一個指針變量,指向的是行指針的頭,怎麼解釋呢,就可以解釋爲p存放的地址是整個二維數組的頭指針。
那麼p++代表什麼呢 就代表着下一個指針的頭指針,那麼如果要取出來(i,j)呢?
*(*(p+i)+j),*(*(p+i)[j])
就是*(p+i)存放的是一個一維數組的地址,此時就像一個上面的一維數組的p;
那麼指針數組呢?
int *p[4];
這裏面的一個數組裏面存放的都是指針,也就是有個指針變量;每一個變量就相當於一開始定義的一維數組的指針變量,那麼要讀取(i,j)的值要怎麼操作呢?
*(p[i]+j) 將p[i]當成一個普通的數組存放的值,要訪問第幾個值一樣,然後p[i] 就相當於一維數組的指針變量p了;