|
发表于 2020-10-15 14:14:02
|
显示全部楼层
本楼为最佳答案
本帖最后由 风过无痕1989 于 2020-10-16 10:17 编辑
通常我们将二维数组看作是二个一维数组,那么对于三维数组,我们也就可以将之看成是三个二维数组。下面的程序正是根据此思想设计的,从数组的贮存和运行来看,对于三维数组,b + 1 指向的是第一个二维数组第一行的第一个元素,而不是第一个二维数组的第二个元素
- #include<stdio.h>
- int main()
- {
- int i,j,k = 0;
- int a[3][3] = {1,2,3,4,5,6,7,8,9};
- int b[3][3][3] = {10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37};
-
- printf("a %p\n",*a);
- printf("a + 1: %p\n\n",*a + 1);
-
- printf("b %p\n",*b);
- printf("b + 1: %p\n\n",*b + 1);
- printf("%p\n",*(*b + 1));
- printf("*b + 1 的值:%d\n",*(*(*b + 1))); // 输出 b + 1 的值
- printf("\n");
- for (i = 0;i < 3;i++)
- {
- for (j = 0;j < 3;j++)
- {
- printf("%d\t",b[0][i][j]);
- k++; // 为了方面数组的美观,计数( 下同 )
- if(k == 3)
- {
- printf("\n"); // 满三个元素换行( 下同 )
- k = 0;
- }
- }
- }
- printf("\n");
- k = 0;
- for (i = 0;i < 3;i++)
- {
- for (j = 0;j < 3;j++)
- {
- printf("%d\t",b[1][i][j]);
- k++;
- if(k == 3)
- {
- printf("\n");
- k = 0;
- }
- }
- }
- printf("\n");
- k = 0;
- for (i = 0;i < 3;i++)
- {
- for (j = 0;j < 3;j++)
- {
- printf("%d\t",b[2][i][j]);
- k++;
- if(k == 3)
- {
- printf("\n");
- k = 0;
- }
- }
- }
- printf("\n");
- }
复制代码
|
-
-
|