Open
Description
关于数组的一些新的理解
数组是数据结构中最常见也最基础的一种数据结构,在所有编程语言中都有数组的实现。 作为一种随机访问的数据结构,对于初学者来说非常困惑的一点是数组是从下标0开始计数的,这似乎非常的反常规思维。从语言学的历史来讲,这种设计方式始于C语言,之后为了兼容历史,各种语言都选择了和C语言相通的设计方式。那么C语言的设计者为什么要这么做呢。
我们知道,在C语言诞生的年代,硬件的局限性非常大,为了有效的利用那有效的CPU, 内存,IO,语言设计者们往往绞尽脑汁。那么假设我们让数组从1开始计数,那么数组寻址公式是这样的:
K address = base address + (k – 1) * typesize
那么如果从0开始计数呢,寻址公式是这样的:
K address = base address + k * typesize
这样就节约了一次CPU操作, 那么大量的计算累积下来,在有限的硬件背景下,带来的性能提升是非常可观的。 这大概就是数组从0开始计数的原因吧。
Metadata
Metadata
Assignees
Labels
No labels