Tag Archives: 计算机系统

别被忽悠了 Lua 数组真的也可以从 0 开始索引?

先前我说 Lua 数组从 1 开始不太爽,很多人来纠正我说也可以从 0 开始,比如: local m = { [0] = 100, 101, 102, 103 } 然后访问时 m[0] 也可以正常访问到第 0 个元素,所以 “Lua 给你充分自由度,让你可以从任意下标索引数组”,貌似好像说的很有道理,但是不是这样呢? 我们先用 # 符号打印下上面数组的长度: print(‘size’, #m) 输出是:3 ,而不是实际元素个数 4,因为 # 就是从 1 开始数起的,所以如果你代码里用了 m[0] ,你也需要额外方式计算长度,同时保证用到这个数组的其他代码也遵从这样计算。 还有一个问题,使用 … Continue reading

Loading

Posted in 编程技术 | Tagged , | 1 Comment

为什么 C 语言数组是从 0 开始计数的?

C 语言等大多数编程语言的数组从 0 开始而不从 1 开始,有两个原因: 第一:地址计算更方便 C 语言从 0 开始的话,array[i] 的地址就正好是: (array + i) 如果是从 1 开始的话,就是 (array + i – 1) 多一次计算,性能受影响,再扩展到二维数组的话 array[i][j] 从 0 开始的地址是: (array + i * N + j) 多整洁,而从 1 开始要变成 (array + … Continue reading

Loading

Posted in 编程技术 | Tagged | 1 Comment