【问题标题】:Why do arrays start on 0 instead of 1? (C, C++) [duplicate]为什么数组从 0 而不是 1 开始? (C,C++)[重复]
【发布时间】:2019-04-23 04:57:14
【问题描述】:

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

?

【问题讨论】:

标签: c++ arrays array-indexing


【解决方案1】:

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

与 C 中的往常一样,您的工作与硬件密切相关。

【讨论】:

    【解决方案2】:

    考虑 int arr[i] 元素。

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 1970-01-01
      • 2023-03-22
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      相关资源
      最近更新 更多