当前位置:C++技术网 > 资讯 > 下标与指针到底有什么关系呢?

下标与指针到底有什么关系呢?

更新时间:2015-06-26 19:11:07浏览次数:1+次

    本文作为基础重要概念普及,就免费分享给大家了。
    在平时使用数组与指针时,经常将数组与指针混合在一起使用,也导致很多人将数组与指针混为一谈,根本分不清楚。曾经写了数组与指针的文章,分析了两者的关系,供大家参考理解的。参考文章为《数组的深入理解以及与指针的关系的深入分析》。自以为把数组与指针的关系讲清楚了。
    然而今天又发现,很多人对下标和指针竟然也混在一起了。我又觉得不得不好好探讨一下了,因为肯定不清楚的不在少数,需要分享一篇分析文章。
    下标是什么?下标就是我们使用数组时在中括号中写的数字。这是具体的使用的场景,但不是定义。作为定义,我们更加通用的描述一下。也就是让概念更加通用,把概念提升一个层次。
    在使用数组时,我们只能使用下标来操作数组,没有其他方法。究其原因,数组就是一段内存,数组名就是这段内存的起始地址,是一个常量。因此数组名不能像变量一样操作。对数组的操作就是使用下标了。然而下标只是一个在这个场景中的使用而已,数组并不局限于此。很多人认为,下标就是数组的中括号中的数字。这是很狭隘的理解。
    其实,下标可以理解为一个相对偏移量。可以说,这是最根本的理解。下标就是一个相对的概念。因此,提到下标,必须要有一个起始的地址,否则就不知道从哪开始偏移。数组的中括号中的数字是一个下标值。一些书上说,下标值是有意义的。你可以这样理解,下标值代表第几个元素,从第0个开始。也可以理解为,这个元素相对于起始地址,偏移几个单元(元素大小为一个单元)。所以说,下标值是有意义的。就算不用作下标,也可以指示第几个元素,相对偏移的。就像矩阵中的A1、A2等,其中的1和2就是下标值,是有意义的。
    下标使用的话,就是一个相对偏移。通常就是与数组使用,用于定位数组中的元素的,然后对数组元素进行操作。通用化点,不只是数组中,使用数组名加上一个数字,这个数字也是一个下标。因为这个数字表示的是相对的偏移量。只要是以一个起始地址,然后再偏移,都可以看作是下标。下标不是通常以为的一个右下角的一个数字哦。这是一个通用的概念,就是一个相对偏移而已。很多地方都会使用下标的概念,如果你只理解为数组中的下标,就很难理解其他场合中提出的下标的概念了。
    而指针,是一个数据类型。指针变量用于存储内存的绝对地址。相当于起始地址从0开始。指针变量中可以更改值,也就是更改了指向的内存地址。指针就是这个作用。而指针经常与下标配合使用,形同数组。这才让很多人把数组与指针混淆了。而指针变量加上下标,代表的意义就是:指针中的值就是起始地址,下标则是从指针中存储的地址作为起始地址开始偏移的。只不过,指针变量的值可以改变,因此表示起始地址是可以改变的。而普通的数组,一旦定义了,地址就固定了。这个就像在地上走一段路,就是数组中的下标。而在向前跑的车上向前走,就是指针加上下标的结果。
    相信看到这里,下标和指针原本就不会混淆的东西,这么详细的解释过后,应该可以彻底分清楚这两个概念了吧。