一、指针数组介绍
指针数组本质是数组,是一个存放指针的数组
代码如下:
arr1和arr2就是指针数组
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是三个创建于不同地址的数组,并不连续
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; }