数组的维度是在创建数组时确定的,并且以后无法更改,这是真的吗?

时间:2017-01-22 05:18:20

标签: c++ c

int main()
{
    int a[3]={1,2,3};

    int *b;

    b=&a[10];

    printf("%u\n",b);

    printf("%d",*b);

}

我认为上述程序会给我一个错误,因为a只是 3个数据项b=&a[10];的集合此b存储了a第11个数据成员的地址。但是代替错误,它给出了第11个数据成员的地址。

数组的大小为3,但它可以存储超出其大小的变量!那怎么可能呢?

1 个答案:

答案 0 :(得分:-7)

是的,这通常有效,因为C和C ++不会检查这些内容。

但这可能会导致不同操作系统出现异常,并且可能会在将来的某个时间对您自己的代码造成异常。这是一个unknown行为的东西,你应该避免它。