对于学习过编程语言的人来说,相信绝大多数人都会有这样的疑问:我们平时计数,通常是从一开始计数的,为什么在编程语言中,数组的下标是从0开始计算的呢?
这是因为,C语言中,下标的含意是:当前元素到第一个元素的偏移量。第一个元素的下标自然就是0,第二个元素的下标为1,第n个元素的下标为n-1。
这样处理能带来什么好处呢?
我们知道,C语言的数组是存储在一片连续的内存空间中的。C编译器就可以直接通过第一个元素的地址,即数组地址,和相应元素的下标[即距首元素的偏移量]来得到它的地址。如:
char arr[] = "hello world!";
假设arr[0]的地址为10000,编译器可以通过10000 + 2来获取a[2]的地址。从编译器的角度来讲,数组下标[索引]从0开始更为高效。