为了强化记忆,从而写笔记保留。
数组指针,顾名思义,是在说一个指针,这个指针是指向数组的。
区别于指针数组
int* p[5] = NULL; //指针数组 基类型 int*
int (*p)[5] = NULL; //数组指针 基类型 int[5]
数组指针实例
int main()
{
int arr[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int (*px)[2]; //定义一个宽度是2的数组指针
px = (int (*)[2])arr; //px是数组指针
printf("%d\n", *(*px)); //打印结果是1,因为*px是数组,*(*px)是数组首元素
printf("%d\n", *(*(px+0)+0));
printf("%d\n", *(*(px+1)+1)); //打印结果是4,px+1移动8个字节,也就是2个int,即3的位置
printf("%d\n", px[1][1]); //打印结果是4
return 0;
}
小结
*() 与 [ ] 是可以互换的,也就是说*(*(p+1)+2)相当于p[1][2]
练习
使用数组指针遍历一个一维数组。