一、指针数组。
字面意思来理解,就是指针的组。一个大小为n的数组,我们在数组里面存放n个地址,每一个地址均可以指向任意数的地址。
#include<stdio.h>
int main()//指针的集合,指针数组
{
int a=3;
int b=33;
int c=333;
int* parry[3];
parry[0]=&a;//这个数组用于存放地址
parry[1]=&b;//这个数组用于存放地址
parry[2]=&c;//这个数组用于存放地址
//这里指针偏移一项,偏移的是数组里面一个指针类型的大小
return 0;
}
二、数组指针
这里我们定义一个数组,定义一个指针。把这个数组的地址赋值给指针。
#include<stdio.h>
int main()
{
/*int* p;
int a[3];
p=a;//此指针并非是数组指针,只是恰好指向了数组首地址的指针
*/
int a[3]={1,2,3};
int (*p)[3];//数组指针,指向另一个数组头
p=&a;//取数组的首地址赋值给数组指针
printf("偏移之前指针指向的地址是%p\n",p++);
printf("偏移之后指针指向的地址是%p\n",p);//数组指针偏移一次偏移得是整个数组的大小,即3*4=12字节
return 0;
}
这里是数组地址赋值给指针,指针偏移偏移的是整个数组的大小。