一、指针数组介绍
指针数组本质是数组,是一个存放指针的数组
代码如下:
arr1和arr2就是指针数组
cpp
int main()
{
int a = 1; int *pa = &a;
int b = 2; int *pb = &b;
int c = 3; int *pc = &c;
int d = 4; int *pd = &d;
int e = 5; int *pe = &e;
int* arr1[5] = { &a,&b,&c,&d,&e };
int* arr2[5] = { pa,pb,pc,pd,pe };
return 0;
}
二、指针数组模拟二维数组
指针数组可以用来模拟二维数组:将多个数组的地址存放于指针数组中
下列代码模拟二维数组:1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
注意:指针数组仅仅是模拟二维数组,但不是真正的二维数组,因为二维数组的内存是连续的,而指针数组模拟的二维数组在内存中内存并不连续
例如:int 型数组nums1,nums2,nums3是三个创建于不同地址的数组,并不连续
cpp
int main()
{
int nums1[5] = { 1,2,3,4,5 };
int nums2[5] = { 2,3,4,5,6 };
int nums3[5] = { 3,4,5,6,7 };
int* arr[] = { nums1,nums2,nums3 };//存放数组名,即数组首元素地址
printf("%d\n", arr[2][4]);//模拟二维数组,打印第3行第5列数字
return 0;
}