我认为C语言中最重要的概念就是地址。数组与指针都是对地址的利用。其中有一个经典的问题,最大值的下标怎么求?地址虽然不是唯一的方法,但是是一个很简便的方法,代码如下
#include<stdio.h>
main()
{ int x[10],*p1,*p2,k;
for(k=0;k<10;k++)
scanf("%d",x+k);
for(p1=x,p2=x;p1-x<10;p1++)
if(*p1>*p2) p2= p1;
printf("max=%d,index=%d\n",*p2,p2-x);
}
下标是p2地址与数组首地址x的差值。对于c来说,这无疑是最简便的方法了,不需要任何多余的代码。
要理解下标运算符的原理,x[1]等于x+1,x的地址加1就是x+1的地址。