#include<stdio.h>
int main()
{//定义四个一维数组int arr1[1] = { 1 };int arr2[3] = { 1,2,3 };int arr3[5] = { 1,2,3,4,5 };int arr4[7] = { 1,2,3,4,5,6,7 };//把四个一维数组放进一个二维数组int* arr[4] = { arr1,arr2,arr3,arr4};//预先计算好每一个数组真实的长度int len1 = sizeof(arr1) / sizeof(int);int len2 = sizeof(arr2) / sizeof(int);int len3 = sizeof(arr3) / sizeof(int);int len4 = sizeof(arr4) / sizeof(int);//把长度放进一个一维数组中int LEN[4] = { len1,len2,len3,len4 };//遍历二维数组for (int i = 0; i < 4; i++){for (int j = 0; j < LEN[i]; j++)//注意LEN的长度{printf("%d ", arr[i][j]);}printf("\n");}return 0;
}
运行结果
使用指针的目的:
实现对不同长度数组的统一管理
通过 int* arr[4] = { arr1,arr2,arr3,arr4};
这样的定义,arr
数组的每个元素(即每个指针)指向了对应的一维数组 arr1
、arr2
、arr3
、arr4
。后续在遍历的时候,就可以通过 arr[i]
先获取到指向第 i
个一维数组的指针,再结合内层循环的索引 j
来访问这个一维数组中的具体元素 arr[i][j]
,从而实现像遍历二维数组一样去遍历这些不同长度的一维数组集合,达到统一管理和访问它们的目的。
例如,arr[0]
指向了 arr1
,arr[1]
指向了 arr2
等等,然后在循环中可以根据每个一维数组对应的实际长度(也就是 LEN
数组中存储的值)来准确地遍历各个一维数组中的元素并输出,代码整体上可以更方便灵活地处理这些原本长度不一的数组数据。