#include "stdio.h"
int main()
{
//定义一个三维数组
int arr1[] = {1,2,3};
int arr2[] = {1,2,3,4,5};
int arr3[] = {1,2,3,4,5,6,7,8,9};
//把三个一维数组放入二维数组中
//数组的数据类型,需要跟内部存储的元素类型保持一致
//arr1:使用数组名进行计算的时候,退化为指向第一个元素的指针,此时不再表示数组的那个整体了;
int* arr[] = { arr1, arr2, arr3};
//int len1 = sizeof(arr1) / sizeof(int);
//int len2 = sizeof(arr2) / sizeof(int);
//int len3 = sizeof(arr3) / sizeof(int);
//printf("len1 = %d\n", len1);
//printf("len2 = %d\n", len2);
//printf("len3 = %d\n", len3);
//int len4 = sizeof(arr[1]) / sizeof(int);
//int len5 = sizeof(arr[2]) / sizeof(int);
//int len6 = sizeof(arr[3]) / sizeof(int);
//printf("len4 = %d\n", len4);
//printf("len5 = %d\n", len5);
//printf("len6 = %d\n", len6);
int len1 = sizeof(arr1) / sizeof(int);
int len2 = sizeof(arr2) / sizeof(int);
int len3 = sizeof(arr3) / sizeof(int);
int arrlen[] = { len1,len2,len3 };
for (int i = 0;i < 3;i++)
{
for (int j = 0;j < arrlen[i];j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
- arr 数组的定义与存储内容
arr 被定义成一个指针数组,其每个元素都是指向整数数组的指针。
arr[0] 指向 arr1 数组的起始地址,arr[1] 指向 arr2 数组的起始地址,arr[2] 指向 arr3 数组的起始地址 - ar[i] [j] 的访问原理
arr[i] :当你使用 arr[i] 时,实际上是从 arr 数组里取出第 i 个元素,而这个元素是一个指向整数数组的指针。例如,arr[0] 就是指向 arr1 数组起始地址的指针。
arri :在得到 arr[i] 这个指针之后,arri 就相当于 *(arr[i] + j)。也就是说,先找到第 i 个整数数组的起始地址,然后偏移 j 个位置,最后取出该位置上的元素。
#include <stdio.h>
int main() {
int arr1[] = {1,2,3};
int arr2[] = {1,2,3,4,5};
int arr3[] = {1,2,3,4,5,6,7,8,9};
int* arr[] = { arr1, arr2, arr3};
// 访问 arr1 的第二个元素
printf("arr1[1] = %d\n", arr[0][1]);
// 访问 arr2 的第三个元素
printf("arr2[2] = %d\n", arr[1][2]);
// 访问 arr3 的第四个元素
printf("arr3[3] = %d\n", arr[2][3]);
return 0;
}
在这个示例中,arr[0] [1] 访问的是 arr1 数组的第二个元素,arr[1] [2] 访问的是 arr2 数组的第三个元素,arr[2] [3] 访问的是 arr3 数组的第四个元素。
综上所述,由于 arr 是一个指向整数数组的指针数组,因此可以使用 arr[i] [j] 这种形式来访问数组元素。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。