壹、作用不同:
優先級的問題,[]的優先級高於*,這就是為什麽後者加了壹個(),int *p[5]定義壹個指針數組p,講到底這個p是壹個數組,數組內的元素是5個指針,而數組內的每壹個指針指向壹個int型的變量;int (*p)[5]定義了壹個指向5個元素的壹維數組的指針。
二、含義不同:
第二個就是這個指針所指的值是壹個大小為5個int的數組的首地址。p+1(數組地址+1)代表內存地址下移了5個單位。
三、使用不同:
int (*p)[5];
int a[10][5];
p=&a[1]; // 現在(*p)就等於a[1] 所以 a[1][2]可以表示為(*p)[2]
擴展資料:
二維數組A[m][n],這是壹個m行,n列的二維數組。設a[p][q]為A的第壹個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按“行優先順序”存儲時則元素a[i][j]的地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((i ? p) * n + (j ? q)) * t
按“列優先順序”存儲時,地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((j ? q) * m + (i ? p)) * t
存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個字節?
百度百科-二維數組