【c语言】多维数组原理
创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
多维数组(三维及以上)与二维数组原理相似: 二维数组存储原理
三维数组就是存放二维数组的数组。主要是对指针和存储原理的理解 体里有面、面里有行、行里有列。一维数组:线性思维;二维数组:矩阵思维;三维数组:多面体思维。面->行->列。
目录
一、三维数组的声明
二、三维数组的初始化
三、三维数组的遍历
三维数组名+下标:
1)用int型指向一维数组的指针(行指针)
2)用int型指向二维数组的指针(平面指针)
3)用int型指向三维数组的指针(立体指针)
一、三维数组的声明
int arr1[2][3][4];
二、三维数组的初始化
与一二维数组相同,有完全初始化和不完全初始化。
int arr[2][3][4] = { 1,2,3,4,5,6,7,8 };
三、三维数组的遍历
三维数组名+下标:
for (int i = 0; i < 2; i++){for (int j = 0; j < 3; j++){for (int k = 0; k < 4; k++){printf("%d ", arr[i][j][k]);}}}
1)用int型指向一维数组的指针(行指针)
#include<stdio.h>
int main()
{int arr[2][3][4] = { 1,2,3,4,5,6,7,8 };// 定义一维数组指针(即行指针)pl ,可以指向 具有4个int的行。// 让pl指向arr数组的第0面第0行。// 使用pl结合下标方式对arr数组遍历int(*pl)[4];pl = &arr[0][0];for (int i = 0; i < 3; i++){for (int j = 0; j < 2; j++){printf("%d %d %d %d ", *(*pl+0),*(*pl+1),*(*pl+2),*(*pl+3));pl++;}printf("\\n");}return 0;
}
2)用int型指向二维数组的指针(平面指针)
#include<stdio.h>
int main()
{//定义二维数组指针(即平面指针)pm,可以指向3×4的二维表格。//让pm指向arr第0面的首地址//使用pm结合下标方式arr数组遍历int arr[2][3][4] = { 1,2,3,4,5,6,7,8 };int(*pm)[3][4];pm = &arr[0];for (int i = 0; i < 2; i++){printf("%d %d %d %d %d %d %d %d", *(* (*pm) + 0), *(*(*pm) + 1), *(*(*pm) + 2), *(*(*pm) + 3), *(*(*pm) + 4), *(*(*pm) + 5), *(*(*pm) + 6), *(*(*pm) + 7));pm++;printf("\\n");}
}
3)用int型指向三维数组的指针(立体指针)
#include<stdio.h>
int main()
{//用不同类型的指针对三维数组arr进行遍历。int arr[2][3][4] = { 1,2,3,4,5,6,7,8 };//使用能够指向一个int型变量的指针变量p指向arr数组的第一个值。/* 然后用p 遍历arr所有元素。*/int(*p)[2][3][4];p = &arr;for (int i = 0; i < 2; i++){for (int j = 0; j < 3; j++){for (int k = 0; k < 4; k++){printf("%d ", (*p)[i][j][k]);}printf("\\n");}printf("\\n");}return 0;
}