指针数组
指针数组是一个存放指针的数组(整形数组存放的是整型,字符数组存放的是字符)
下面列举几种指针数组
int* arr1[10];//整形指针的数组 A
char* arr2[10];//一级字符指针数组 B
char** arr3[10];//二级字符指针的数组 C
其中,arr1,arr2,arr3为数组名,代表数组首元素的地址.
1. 一级指针数组存放的是数组元素的地址(如A中存放的是arr1中十个整形的地址 ),
(B中则为arr2中十个字符的地址)
2. 二级指针数组存放的是一级指针的地址(C中则为arr3中十个一级指针变量的地址)
为了更好地理解上述内容,我将用一维指针数组模拟实现二维数组的例子来解释
#include <stdio.h>
int main()
{
int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 2,3,4,5,6 };
int arr3[] = { 3,4,5,6,7 };
//指针数组
int* arr[3] = { arr1,arr2,arr3 };
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 5; j++)
{
printf("%d ", *(*(arr+i)+j));
}
printf("\n");
}
return 0;
}
该代码定义了三个整形整形数组arr1,arr2,arr3和一个一维指针数组arr,该一维指针数组存放的是上述三个整形数组的首元素的地址.之后再利用双for循环遍历指针数组arr,并将其打印出来…jpeg)
图解