> 文章列表 > 【c语言】多维数组原理

【c语言】多维数组原理

【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;
}