指针数组是数组,是用来存放指针的数组。
int arr1[10]; //整型数组
int* arr2[10]; //存放整型指针的数组
int main()
{
int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 6,7,8,9,10 };
int arr3[] = { 11,12,13,14,15 };
int* parr[3] = { arr1,arr2,arr3 };
//这里的parr[3]就是一个指针数组,数组大小为3,里面存放的内容是整型指针,
//也就是上面定义的3个整型数组首个元素的地址,数组名通常是数组首元素的地址
//但是也有2个例外,后面会介绍
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 5; j++)
{
printf("%d ", *(parr[i] + j));
//这里也可以写成printf("%d ", parr[i][j]);运行结果是一样的
}
printf("\n");
}
return 0;
}
运行之后结果为
如果还是不太理解指针数组存放的内容,可以看下面这个写法
int main()
{
int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 6,7,8,9,10 };
int arr3[] = { 11,12,13,14,15 };
int* a = arr1;
int* b = arr2;
int* c = arr3;
int* parr[3] = { a,b,c };
//int* parr[3] = { arr1,arr2,arr3 };
//这里的parr[3]就是一个指针数组,数组大小为3,里面存放的内容是整型指针,
//也就是上面定义的3个整型数组首个元素的地址,数组名通常是数组首元素的地址
//但是也有2个例外,后面会介绍
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 5; j++)
{
printf("%d ", *(parr[i] + j));
//这里也可以写成printf("%d ", parr[i][j]);运行结果是一样的
}
printf("\n");
}
return 0;
}
运行结果与上面一致,从这里可以看出,指针数组就是存放指针的数组。