C++ C++-1索引是否具有最后一个索引元素的值?嗯?
你能解释一下这里发生了什么吗 对我来说,-1索引最后一个元素5是个谜 我知道len-1对于for循环是正确的,但我想知道它如何旋转阵列C++ C++-1索引是否具有最后一个索引元素的值?嗯?,c++,gcc,read-eval-print-loop,C++,Gcc,Read Eval Print Loop,你能解释一下这里发生了什么吗 对我来说,-1索引最后一个元素5是个谜 我知道len-1对于for循环是正确的,但我想知道它如何旋转阵列 #include <iostream> using namespace std; int main() { int a[5]={1,2,3,4,5}; int len = sizeof(a)/sizeof(a[0]); for(int i=len;i>=0;i--) { a[i
#include <iostream>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
int len = sizeof(a)/sizeof(a[0]);
for(int i=len;i>=0;i--)
{
a[i]=a[i-1];
}
for(int i = 0;i<len;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
int len=sizeof(a)/sizeof(a[0])代码>将为您提供5
。然后你为(inti=len;i>=0;i--){a[i]=a[i-1];
-这意味着你做了a[5]
-但是5
不是一个有效的索引,只有[0-4]是有效的。所以你访问了越界,这就是说,任何事情都可能发生
顺便说一句,为什么不使用?你从I开始,len的值是5。这是错误的。你的最大索引位置是len-1(4)。所以你的第一个循环看起来是错误的。如果是这样的话,那基本上是巧合。两端都有未定义的行为。
a[5]=a[4];
和a[0]=a[-1]
是关于数组的越界访问,如果将其他元素作为最后一个元素,您将看到它不是5的来源。