微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C -1索引是否具有最后一个索引元素的值? ??

如何解决C -1索引是否具有最后一个索引元素的值? ??

你能告诉我这里发生什么事吗?

-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]=a[i-1]; 
        }

    for(int i = 0;i<len;i++)
        {
        cout<<a[i]<<" ";
        }
    return 0;
    }

输出

5 1 2 3 4

解决方法

int len = sizeof(a)/sizeof(a[0]);将给您5。然后您执行for(int i=len;i>=0;i--){ a[i]=a[i-1];-这意味着您执行a[5]-但是5不是有效的索引,只有[0-4]有效。因此,您访问的范围是Undefined Behaviour,因此任何事情都可能发生。

顺便说一句;为什么不使用std::size

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。