定义一个数组int a[]={1,2,3,4,5}; 数组长度为N
定义一个指针int *q=a; //当数组a直接列出表示&a[0]
1: for(int j=0;j<N;j++)
printf("a[%d]=%d",j,a[j]);
a[j]第一种为最基本的方法 数组名和游标变量顺序访问数组
2: for(;j<N;q++);
printf("*q=%d",*q);
*q第二种为 改变数组指针的指向 q+1指向数组a的下一个元素
3: for(int j=0;j<N;j++)
printf("*(q+%d)=%d",j,*(q+j)); //数组指针始终指向数组的第一位地址 就如同汇编堆栈指针ebx mov ax,[ebx-04h]使用第一个局部变量
*(q+j)第三种为 数组指针与游标变量结合,改变游标变量遍历数组
4: for(p=a+N-1;j=N-1;j>=0;j--)
printf("q[-%d]=%d",j,q[-j]); //数组指针q[j]和a[j]表示的意义相同
或者for(p=a+N-1;j=-(N-1);j<=0;j++)
printf("q[%d]=%d",j,q[j]);
q[-j]第四种为 数组指针与游标变量结合,用指针和下标遍历数组
第四种方法下标遍历有负号的情况且数组指针指向末尾元素: a[-4]==a[0] a[-3]=a[1]
综上总结 当游标变量中有符号时,末尾元素添加负号即为首位元素依次类推 首位元素添加负号即为末尾元素