首页  >   经验  >   数组的深入理解以及数组与指针的关系的深入分析

数组的深入理解以及数组与指针的关系的深入分析

查看 codexia 的博客 2015-06-23 12:21:14 1796
数组   指针  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介本文将会把数组以深入的层次剖开,从根本上把握数组,从而能够彻底将数组和指针区分清楚,更好的为今后的学习使用打基础。

    在开篇之前,提醒一下,如果此刻的你对指针还是很模糊,如果是因为没有看《带你深入理解指针,轻松掌握指针》这篇文章,请赶紧去看看,至少从感性上把指针弄明白,最好多看几遍,最大化吸收和理解,如果你是看过了,请不要走马观花,不要只是觉得你好像认为是这么回事就可以了,你要是觉得还是模糊的话,还是先去看一遍,如果你能从那篇文章中看到可以形成自己的思维认识,或者提出质疑,那就差不多了,不然,后续的文章,你还是迷迷糊糊的,要脚踏实地,一步一步的吸收,才能走得更远,不然基础的没弄明白,后面的就步步维艰。当然一下子你不能够全部理解,但是多看几遍绝对是有益的,特别是,一些概念和想法你没听说过,那么你一定要先混个脸熟,也是为以后的深入打基础,不能在接触一个新的东西时就想弄透,那有点过了,至少初学者没基础不应该这样想。对于一些句子所涉及的知识你不清楚,可以尝试读出来,慢慢断好句子,也是能够促进理解的,快速扫描式看的话,很多重要的知识点都会漏掉的。
    好了,前言说完,自己对号入座,看到这里,说明你不存在指针理解问题,那我们进入正题。
    说起数组,一维数组倒是简单,很好理解,但是到了二维,难度就急剧增加,到了三维数组,心理就有点承受不住了。这是我起初自学这个部分的感觉。因此我决定暂停,然后去加深指针和其他基础,不然就往下走不下去了。加深了基础,再继续,难度就大大降低了,这也是我为什么开篇就提醒的原因。
    要从深入的角度分析,那就必须深入到内存。数组在内存的形式以及其他方面的。这里不会教大家怎么去使用数组,这些都很容易在教科书找到,而且还罗列的一条一条的,但是你却没有真的弄懂它,所以,我所要做的,就是将它的内在本质解释一下,让读者看清数组是什么东西,这样你就能够成竹在胸,运用自如了。
    在《带你深入理解指针,轻松掌握指针》一文中,我已经提到过,内存的结构是线性排列的,当然这指的是虚拟内存,也就是逻辑内存,不是我们看得见的那些内存条。内存条的物理结构比较复杂,是有平面排列的,通常是矩阵式的分布。这里不讨论具体的内存相关的,只是告诉你,在编程涉及到的内存,是线性结构,即内存地址是按照从0到最大地址一次排列的。线性排列就导致很多问题,比如,非线性的结构无法直接表示和处理,必须进行转换进行表示。一维数组,是线性的,对其操作都是很直观的,数组的线性排列和内存排列一直,所以我们就直接将一维数组和内存进行对应。但是二维数组,就不是线性的了,二维的是一个平面,由x和y两个轴向,而一维的就只有x轴向,三维的就有x,y和z三个轴向。因为计算机的所有数据包括指令都是经过内存到CPU的,也就是说,所有的数据都要在内存存放,但是二维数组如何存放在一维的内存结构(线性的布局)呢?这就是一个问题,那三维的问题就更大。还有树结构、图结构等等,这些都是问题,凡是生活中出现的结构,除了线性能够表示的,都不能直接用内存结构直接表示出来,因为内存是线性的,只能表示线性的,所以就有问题。这也就是数据结构这门学科出现的原因。我们要将非线性的表示转换成线性的,我们就要下工夫去研究了。当然这里不是介绍数据结构,因此就不多讲数据结构的知识。因为二维以及以上维熟的数组就是一种非线性的,我们就要知道它们是怎么表示到内存的,知道了这个,我们就能够很深入的把握数组,那多少维数,本质都一样,至于更多维数表示的逻辑意义,就不探讨,比如二维的逻辑意义就是平面结构,三维就是立体结构,四维五维我就不清楚了。这就是学习数组以及数据结构的真正难处,你要明白各种数据结构在内存的分布规则,那学习就轻而易举了。
    既然多少维本质都是一样的,我们就拿最常用的二维来说明问题。
    二维数组,表示表格形式,你在使用时就把它当做表格使用,行列和表格的对应就是了。但是真的要灵活的使用,那我们来看看内部表示。在内存中,要确定一个数组,都是

1.微信扫码
2.点击按钮,粘贴命令
自动刷新 手动刷新
命令:rd eY~D[ 复制
提示:如果您发送了命令,自动刷新会展开全文。自动刷新最多60秒,超过60秒请点击手动刷新。
创作不易,汗水不止!为防止劳动果实被爬虫窃取,开启了反爬机制,需要您发送命令继续阅读。取关会再次出现此提示。一段时间后出现此提示,请再次发送即可。如有问题,请加客服微信Freeme007处理。感谢您的理解。
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:数组的深入理解以及数组与指针的关系的深入分析
文章地址:http://www.cjjjs.com/article/6232015142112590
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:数组的深入理解以及数组与指针的关系的深入分析
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. C++ Primer Plus 6th 4.13 编程练习题 第6题 结构体数组的初始化和使用 查找全网同类文章
  2. C++ Primer Plus 6th 4.12 复习题 第13题 动态创建数组与vector容器的创建 查找全网同类文章
  3. C++ Primer Plus 6th 4.12 复习题 第12题 数组下标使用和数组指针的使用对比 查找全网同类文章
  4. C++ Primer Plus 6th 4.12 复习题 第11题 声明指针并输出指针的值 查找全网同类文章
  5. C++ Primer Plus 6th 4.12 复习题 第6题 声明并初始化数组 查找全网同类文章
  6. C++ Primer Plus 6th 4.12 复习题 第5题 数组下标的使用 查找全网同类文章
  7. C++ Primer Plus 6th 4.12 复习题 第4题 数组元素提取和操作 查找全网同类文章
  8. C++ Primer Plus 6th 4.12 复习题 第1题 声明数组变量 查找全网同类文章
  9. 函数的形参是函数指针,能设置默认值吗?如果能应该怎么写 查找全网同类文章
  10. c指针的指向与赋值的区别 查找全网同类文章
分享到:
分享文章[数组的深入理解以及数组与指针的关系的深入分析]到QQ空间

相关阅读

猜您感兴趣