这不是一个真正的代码问题,而是一个疑问,为什么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];
?
答案 0 :(得分:4)
因为该符号执行指针算术运算。 array[0]
实际上表示数组的位置加上0个元素的大小。
与C语言一样,您正在接近硬件。
答案 1 :(得分:0)
考虑int arr [i]元素。
arr [i]被解释为*(arr + i)。现在,arr是数组的地址或数组的第0个索引元素的地址。因此,数组中下一个元素的地址为arr + 1(因为数组中的元素存储在连续的内存位置中)。 因此,如果执行*(arr + 0),它将给出阵列的起始存储位置。 *(arr + 1)给出下一个存储位置。因此 i 即0,1..etc可以使用类似偏移量。
正如@ravnsgaard在C语言中所说,您正在接近硬件。