小学读书社团取名大全:C语言的下标为什么从0开始

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/06 07:28:45

其实从0开始是有一定道理的。
数组是一段连续的空间,要求a[i]就是求它的地址,然后找到它。如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度;如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度。
是不是前一种更好计算呢。
如果是二维数组就更是这样了。

C语言的下标与其地址是相对应的,而第一个下标刚好是数组所在的地址,所以不用加偏移(既加0),所以C语言的下标就定为从0开始(C语言的发明者认为这样比较符合逻辑).

这个特性是为了方便编译器设计者而设定的。(为什么不呢,开头几年c语言的主要客户就是编译器设计者啊)。
偏移量在编译器设计者心目中根深蒂固,a[3]就是首地址为a+3的值。所以c语言被设计成这个样子。
后来的c++,java也都遵循这个约定。但并不是所有语言都是这样。比如:vb可以指定下标,而关联数组则是用字符串做为下标的。

这个特性是为了方便编译器设计者而设定的。(为什么不呢,开头几年c语言的主要客户就是编译器设计者啊)。
偏移量在编译器设计者心目中根深蒂固,a[3]就是首地址为a+3的值。所以c语言被设计成这个样子。
后来的c++,java也都遵循这个约定。但并不是所有语言都是这样。比如:vb可以指定下标,而关联数组则是用字符串做为下标的。

没有规定一定要从“0”开始啊,如果你愿意,可以从任何数字开始,也能达到一样的效果。

不过按照人们的习惯,做加法计算的时候,初值都选用“0”(这样,加几减几都不会出现偏差);做乘法运算的时候,初值都选用“1”(如果选用“0”的话,乘到最后的结果就只能是“0”不会得到预期的结果了)。

C语言的下标与其地址是相对应的,而第一个下标刚好是数组所在的地址,所以不用加偏移(既加0),所以C语言的下标就定为从0开始(C语言的发明者认为这样比较符合逻辑).