【电子资讯】通过指针引用数组元素
如果指针p指向一个一维数组x[5],并且p已赋初值&.x[0],可以使用以下3种方式引用数组元素:
①下标法:C语言规定,如果指针变量P已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。p+i和x+i,就是a[i],或者说它们都指向x数组的第i个元素。
②地址法:*(p+i)Nl*(x+i)tg 99是x[i]。实际上,编译器对数组元素x[i]就是处理成*(x+i),即按数组的首地址加上相对位移量得到要找元素的地址,然后找出该单元中的内容。
③指针法:用间接访问的方法来访问数组元素,指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价。
下面利用上面3种访问方法编写例程,程序清单如下:
#included ioml28v.h>
#include
#included stdi0.h>
void init devices(void) //设备初始化
f
CLI();
XDIV =Ox00;
XMCRA=Ox00;
MCUCR=0x00;
EIMSK=Ox00;
TIMSK=Ox00;
SEI();
}
void main()
{
init_devices();
int x[10]={0,1,2,3,4,5,6,7,8,9);
int i;
for(i=0;i
printf(”%d”,x[i]); //下标法输出
printf(”\n”); //换行
for(i=0;i
printf(”%d”,*(x+i)); //地址法输出
printf(”n”); //换行
for(p=X;p<(x+10);P++)
printf(”%d”,*p); //指针法输出
}
对上述3种方法说明如F:
在C语言中,像p++这样的自加操作是比较快的,这种有规律地改变地址值(P++、)的方法能大大提高执行效率。下标法和地址法执行效率相同。C编译系统是将x[-i]转换为*(x+i)处理的,即先计算元素的地址。指针变量可以直接指向元素,不必每次都重新计算地址.因此指针法速度快。下标法比较直观,能直接知道是第几个元素;地址法和指针法不直观.不容易很快判断出当前正在处理的是哪一个元素。
电子街更多推荐