当前位置:C++技术网 > 精选软件 > C++ Primer Plus 6th 4.12 复习题 第12题 数组下标使用和数组指针的使用对比

C++ Primer Plus 6th 4.12 复习题 第12题 数组下标使用和数组指针的使用对比

更新时间:2019-03-08 08:33:33浏览次数:1+次

C++ Primer Plus复习题4.12 第12题  数组下标使用和数组指针的使用对比

题目:
12.假设treacle是一个包含10个元素的float数组,请声明一个指向treacle的第一个元素的指针,并使用该指针来显示数组的第一个元素和最后一个元素。

答案:
float * pf = treacle; // or = &treacle[0]
cout << pf[0] << " " << pf[9] << "\n"; // or use *pf and *(pf + 9)

C++技术网辅导详解解答:
    数组的第一个元素的地址和数组的地址是同一个值。所以答案中的两种都可以。对于数组元素的操作,有两种方式,一个是数组下标,一个是指针。数组下标的使用更为简单明了,不易出错。而指针的使用则会复杂些,对地址的计算要准确。不过用指针来操作会更加灵活强大,这也是指针的魅力所在。
    数组下标的使用,使用下标数字就可以取到对应的元素,而指针的操作则需要对地址进行运算而得到一个正确的地址。在使用指针地址运算的时候,容易对加减操作的数值多少产生疑惑,经常去理顺加多少才是正确的。这是一些细节,我觉得有必要认真去统一理解一下,便于今后什么时候提起来都可以准确做出地址计算。
    此前,我都是用画图的方式,一个个的去移动指针,确认加的数值和指针对应的移动,而很少用数学的方式去理解。现在回过头来想,有一个好的理解思路。
    数组的使用和明确,下标都是从0开始,那么下标为0就是第一个元素,那么下标为454就是第455个元素。下标从0开始算,而第几个是人类理解的方式,是从1开始算的。数组下标的这个索引方式,我们都非常熟悉了。那么指针的地址相加如何呢?我们不妨将指针所指的地址认为是+0,和数组下标为0刚好对应。那么数组下标是多少,指针也就加多少,那么你再看指针指向了哪,换成数组的下标形式,也就一目了然了。如:*(pf+154)就是指向的第155个元素,因为换算成数组形式就是pf[154],也就是第155个元素。