【c语言】多维数组原理

本文介绍了三维数组的概念,将其与一维和二维数组进行了对比,并详细阐述了三维数组的声明、初始化和遍历方法。通过示例代码展示了如何使用指针来遍历和操作三维数组,包括行指针、平面指针和立体指针的使用。
摘要由CSDN通过智能技术生成

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

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

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

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

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

  

目录

一、三维数组的声明

二、三维数组的初始化

三、三维数组的遍历

三维数组名+下标:

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值