C语言数组指针偏移(指针增量和数组的关系)
指针与下标法的选择:
指针访问效率高于下标数组名的访问效率
但是只有在指针正确访问时,才能比下标更有效率
下标法更容易理解,在可读性方面更有优势
#include<stdio.h>
int main()
{
int arr[]={1,2,3};
int *p;
p=arr;
int i;
for(i=0;i<3;i++){
printf ("address:0x%p,%d\n",&arr[i],arr[i]);
printf ("address:0x%p,%d\n",(p+i),*(p+i));
//(p+i)==&arr[i];*(p+i)==arr[i];
}
/*
printf("0元素是%d\n",*p);//*是该地址的数据读取符,也可写成*(p+0)
printf("1元素是%d\n",*(p+1));//根据指针类型进行偏移,int偏移到下一整型数
printf("2元素是%d\n",*(p+2));
*/
return 0;
}
结果如下:
可以看出,通过指针指向数组,地址和值都一致
/*结果:
address:0x000000000061FE04,1
address:0x000000000061FE04,1
address:0x000000000061FE08,2
address:0x000000000061FE08,2
address:0x000000000061FE0C,3
address:0x000000000061FE0C,3
*/