为什么数组从 0 而不是 1 开始?(C,C++)

Why do arrays start on 0 instead of 1? (C, C++)

本文关键字:C++ 开始 数组 为什么      更新时间:2023-10-16

这不是真正的代码问题,而是一个疑问,为什么 C 和 C++ 上的数组从 0 开始?它与某些内部流程有关吗?

int array[4]={1,2,3,4};
cout<<array[0];
cout<<array[1];
cout<<array[2];
cout<<array[3]; ///This prints 1234

但为什么而不是

int array[4]={1,2,3,4};
cout<<array[1]; //as the first element
cout<<array[2];
cout<<array[3];
cout<<array[4]; 

因为符号是指针算术的。 array[0]实际上意味着数组的位置加上 0 个元素的大小

与 C 语言一样,您在靠近硬件的地方工作。

考虑 int arr[i] 元素。

arr[i] 被解释为 *(arr + i(。现在,arr 是数组的地址或数组的第 0 个索引元素的地址。因此,数组中下一个元素的地址是 arr + 1(因为数组中的元素存储在连续的内存位置(。因此,如果您执行 *(arr+0(,它会给出数组的起始内存位置。*(arr+1( 给出下一个内存位置。所以这个 0,1,..等可以使用像偏移一样。

正如@ravnsgaard在 C 中所说,您正在靠近硬件工作。