out of 序列 size,数字自动变化


#include <iostream>
using namespace std;

void e(int a[],int b[],int c[],int d)
{
    for (int i=d-1;i>=0;i--)
    {
        a[i]=2;
        b[i]=3;
        c[i]=4;
    }
    for (int j=0;j<d;j++)
    {
        cout<<a[j]<<" ";
        cout<<b[j]<<" ";
        cout<<c[j]<<" ";
    }
}
int main(){

    int a[3]={1,2,3};
    int b[3]={3,4,5};
    int c[3]={5,6,7};
    e(a, b, c, 5);
}

输出 2 3 4 2 3 4 2 3 4 2 2 3 2 2 3 而不是五个2 3 4
为什么out of index 输出会自动变,但有时候可以顺利定义a[i]=j 即使out of index

你不都是越界么。应该是这三个数组在内存空间是连续的,你越界访问时,会越界修改了其它数组里的元素值

①为什么out of index 输出会自动变?
因为越界了,就是非所开辟空间内的内容,每次输出就会变一次,因为越界的内容无法保证准确性。
②但有时候可以顺利定义a[i]=j 即使out of index
能够顺利定义,同时数组越界不代表这样定义就是对的。

希望对题主有所帮助!可以的话,帮忙点个采纳!

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632