基础A: 定义一个指向一维数组元素的指针变量
int a[10]; /*定义a为包含10个整型数据的数组*/
int *p; /*定义p为指向整型变量的指针*/
方法1: p = &a[0]; // 把a[0]元素的地址赋给指针变量p
方法2: p = a; // 数组名 a 代表数组的首地址(&a[0];)
以上两种方法等价
而这里应当注意: p是变量 而 a ; &a[0] 都是常量 。
故而 p++是可以的(在利用指针法对数组的元素进行引用时) 而a++ 是不可以的 (a为首地址 常量)
基础B: 一维数组指针 *p++ / * (p++) / (*p)++ 的区别
1) *p++,由于++和*同优先级,结合方向自右而左,等价于*(p++)。
*(p++) 与 *(++p)作用不同。若p的初值为a,则*(p++)等价a[0],*(++p)等价a[1]。
2) (*p)++表示p所指向的元素值加1。注意与*(p++) / *p++ 区别
3) 如果p当前指向a数组中的第i个元素,则
*(p--)相当于a[i--]ÿ