【c语言】多维数组原理

创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡><)!! 

主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ  

多维数组(三维及以上)与二维数组原理相似: 二维数组存储原理 

三维数组就是存放二维数组的数组。主要是对指针和存储原理的理解 体里有面、面里有行、行里有列。一维数组:线性思维;二维数组:矩阵思维;三维数组:多面体思维。面->行->列

 【c语言】多维数组原理_第1张图片 

目录

一、三维数组的声明

二、三维数组的初始化

三、三维数组的遍历

三维数组名+下标:

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]);
			}
		}
	 }

【c语言】多维数组原理_第2张图片

1)用int型指向一维数组的指针(行指针)

#include
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;
}

【c语言】多维数组原理_第3张图片  

2)用int型指向二维数组的指针(平面指针) 

#include
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");
		}
}

【c语言】多维数组原理_第4张图片  

3)用int型指向三维数组的指针(立体指针)

#include
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;
}

【c语言】多维数组原理_第5张图片

 

你可能感兴趣的:(c语言之路重点知识整合,c语言,c++,笔记,学习)