声明数组并打印[BUG?]

时间:2019-03-03 13:27:21

标签: c++ arrays codeblocks element

这可能是一个菜鸟问题,但是我仍然很困惑为什么会这样。 所以这段代码可以正常工作:

int *m,g;
    g=1;
    m[0]=1;
    cout<<m[0];

这则报告错误:

int *m;
    m[0]=1;
    cout<<m[0];

这可能是个错误吗?

1 个答案:

答案 0 :(得分:0)

您正在使用未初始化的数组,并且尝试访问它导致未定义的行为

根据标准

  

如果未为对象指定初始化程序,则该对象为   默认初始化。用自动或   获得动态存储持续时间,对象具有不确定性   值,如果没有对该对象执行初始化,则表明   对象保留不确定的值,直到该值被替换为止。   如果评估产生不确定的值,则行为   未定义

您应该在此之前初始化

int *m=new int[size_you_want_give_to]

例如

int *m=new int[5]; // array of 5 elements