C语言之对多维数组的简易理解
来源:互联网 发布:c语言入门那本书好 编辑:程序博客网 时间:2024/05/21 06:50
在平常学习的过程中,必定会经常跟数组打交道并且也经常使用数组,不管是一维数组也好还是多维数组也罢,数组可以说是时常出现。相比较而言,对一维数组来说,理解以及使用都是轻车熟路。但是相比一维数组,多维数组的使用以及理解却有些偏差。在此,我对多维数组进行了简易的理解。 首先以一维数组为例。要画出一个一维数组,想必非常简单。
arr[4] = { 1 , 2 , 3 , 4 };
上图便是一维数组的存储情况。
但是,当一维数组升级成二维数组时呢?我们平常所看的书本等,在画二维数组时,将二维数组列表化。这样可以让读者简洁明了的理解二维数组。如下图。
但是,如果让画三维数组呢?在这个平面无法展现一个立体的情况,并且如果继续升维,四维五维等等。这就引起了我的思考。
我们都知道,数组在内存中的存储,都是线性的。所以无论是几位数组,我们都应该将其理解为线性,也就是一条线排列。那将如何展示呢?
如下图;我们定义一个二维数组 arr [4][4] 将数组一维化,分步解决,先理解arr [4][4] 其实是一个一维数组,里面存储了四个元素,而每个数组元素又是一个新的数组。
当我们展示完这个一维数组的元素后,我们再将这个数组的元素展开,也就是这个数组,如下图;
这样想的话,其实这个二维数组可以理解成,一个一维数组,里面存储了四个一维数组。而这四个数组相当于之前那个一维数组的元素。
进而可以类推,不管是几位数组,我们都可以认为是一维数组,这个一维数组里面存储着接下来的一维数组,一层一层推到最后,也就推出来了这个数组最终的元素。这样便与数组的线性存储一致了。
接下来,我们研究一个新的问题,就是数组传参问题。
大家都知道,一维数组传参时,需要降维,需要形参接收,这里形参接收的都是指针。这里的指针,便是数组元素类型的指针。
int arr[4] = {1,2,3,4}
这里如果接收这个数组,那么接收的便是一个整形类型的指针,因为数组内部存储的是一个整型类型。
int arr [4][4]
如果是一个二维数组呢?此时降维成什么? 根据上文所讲,如果将这个二维数组理解成一个一维数组里面存储着四个一维数组的话,那么降维传参后的指针类型必定是一个数组指针类型。结果正确吗?我们验证一下。
显而易见,是正确的。
本文是作者的简易理解,日后会有更加有深度的理解,日后会更新。如果有错误,还请包涵,并指出加以改正。谢谢大家了 !
- C语言之对多维数组的简易理解
- 自身对C语言数组越界访问的简易理解
- C语言中多维数组的理解
- C语言中多维数组的理解
- C语言中多维数组的理解
- 对多维数组的理解
- 对C/C++中多维数组指针的理解
- 对多维数组与指针的理解
- C语言入门之多维数组的指针变量
- 对C语言数组的理解
- 对C语言二维数组的理解
- C语言入门教程之八多维数组
- 理解C语言——从小菜到大神的晋级之路(9)——多维数组
- C语言----多维数组
- C语言多维数组指针的技巧
- C 语言的动态多维数组
- C语言指向多维数组的指针
- C语言指向多维数组的指针
- 页面中文乱码的处理
- 处理 1 counts of IllegalAnnotationExceptions Class has two properties of the same name "ITEM"
- MVP注册登录
- 如何使用memcache缓存
- 网络流:最大流以及费用流的总结
- C语言之对多维数组的简易理解
- MySQL源码安装
- Python 学习笔记-错误记录
- C++矩阵计算库Eigen3之:线性代数与分解
- golang实现简单的反射demo
- C++中动态类型与动态绑定、虚函数、运行时多态的实现
- CSAPP第五章小结
- 数字字符串转换为字母组合的种类数 动态规划
- github一些用法