C语言自学完备手册(29)——指针(3)

版权声明: https://blog.csdn.net/lfdfhl/article/details/83274203

自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


讲给Android程序员看的前端系列教程(图文版)
讲给Android程序员看的前端系列教程(视频版)
Android程序员C语言自学完备手册


版权声明


问题描述

数组的下标是从0开始;C语言如此,Java亦如此!为什么不是从1开始呢?从1开始不是更容易理解么?


释疑

假若存在一个数组a,平常访问数组中的元素,都是通过下标a[i]的方式进行的。其实,这个下标i更准确的含义应该是偏移量。第一个元素即a[0]的地址是整个数组的首地址(base_address),所以a[0]的偏移量是0。a[i]的偏移量是i,寻址公式就是a[i]_address = base_address + i*data_type_size;假如下标从1开始,那么此时的寻址公式a[i]_address = base_address + (i-1)*data_type_size。按照该寻址公式,对于CPU而言每次随机访问就多了一次运算,就会多发一条指令。所以,数组的下标从0开始可以减少计算时间,提高运行效率。

猜你喜欢

转载自blog.csdn.net/lfdfhl/article/details/83274203