數組名相當于指向數組第一個元素的地址。
數組名不是變量,是地址常量,不能為其賦值。
如下:
1)一維數組中
對于數組 a[5] = {1, 2, 3, 4, 5};
數組名a相當于指向第一個元素a[0]的指針。即 a 與 &a[0] 等價。
2)二維數組中
int a[2][3] = {1, 2, 3, 4, 5, 6};
int __; // 完成對p的定義
p = a;
分析 p = a;
a 相當于指向a[2][3] 的“第一個元素”的地址
所謂“第一個元素”是指第一個“包含3個int型元素的一維數組”
所以a 相當于一個“包含3個int型元素的一維數組”的地址
因此p的基類型應該是:”包含3個int型元素的一維數組“
定義一個指向“包含3個int 型元素的一維數組”的指針變量:
int (*p)[3];
注意:
int *p = &a[0];
a++是沒有意義的,但p++會引起p的變化
p可以指向數組最后一個元素以后的元素
指針做加減運算時一定注意有效的范圍。
如
int a[5];
int *p = &a[0];
p--;
*p = 6; // damage