數組名在大多數表達式中退化為指向首元素的指針:
int a[5]; int *p = a; // 等價於 &a[0] // a = p; 錯誤:數組名是常量指針,不可修改
for (int i=0; i<5; i++) {
cout << *(p+i) << " "; // 等價於 p[i]
cout << *(a+i) << " "; // 數組名同理
}
a[i] 編譯器實際轉為 *(a+i)。指針加減按元素大小縮放:p+1 增加 sizeof(int) 字節。
int a[3][4]; int (*p)[4] = a; // 指向含 4 int 的數組 p[1][2] == *(*(p+1)+2) == a[1][2]
函數參數傳遞數組實為指針:void f(int a[]) 等價 void f(int *a),需額外傳長度。