指针数组
指针数组本质上是一个数组,用来存放指针也就是地址。
int arr1[10] = {0}; // 整型数组
char arr2[5] = {0}; // 字符数组
int* arr3[3] = {0}; // 指针数组
例1:
#include <stdio.h>
int main() {int a = 1,b = 2,c = 3;int* arr[3] = { &a , &b , &c };int i = 0;for (i = 0; i < 3; i++) {printf("%d " , *arr[i]);}return 0;
}
例2:
#include <stdio.h>
int main() {int arr1[5] = { 1 , 2 , 3 , 4 , 5 };int arr2[5] = { 6 , 7 , 8 , 9 , 10};int arr3[5] = { 11 , 12 , 13 , 14 , 15 };int* p_arr[3] = { arr1 , arr2 , arr3 };int i = 0;// 遍历指针数组for (i = 0; i < 3; i++) {int j = 0;// 遍历指针数组里每一个元素指向的一维数组for (j = 0; j < 5; j++) {printf("%-3d" , *(p_arr[i] + j));}printf("\n");}/*result:1 2 3 4 56 7 8 9 1011 12 13 14 15*/return 0;
}
由例2可知,我们模拟出来一个很像二维数组的写法,但是实际上并不是二维数组。因为二维数组在内存中是连续存放的,但是例2这种写法并不是连续存放。