1

不是真正的代码问题,而是一个疑问,为什么 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]; 

?

4

2 回答 2

4

因为符号进行指针运算。array[0]实际上是指数组的位置加上 0 个元素的大小

与 C 中的往常一样,您在靠近硬件的地方工作。

于 2019-04-23T05:04:03.223 回答
0

考虑 int arr[i] 元素。

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

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

于 2019-04-23T05:23:30.850 回答