这可能是一个菜鸟问题,但是我仍然很困惑为什么会这样。 所以这段代码可以正常工作:
int *m,g;
g=1;
m[0]=1;
cout<<m[0];
这则报告错误:
int *m;
m[0]=1;
cout<<m[0];
这可能是个错误吗?
答案 0 :(得分:0)
您正在使用未初始化的数组,并且尝试访问它导致未定义的行为
根据标准
如果未为对象指定初始化程序,则该对象为 默认初始化。用自动或 获得动态存储持续时间,对象具有不确定性 值,如果没有对该对象执行初始化,则表明 对象保留不确定的值,直到该值被替换为止。 如果评估产生不确定的值,则行为 未定义
您应该在此之前初始化
int *m=new int[size_you_want_give_to]
例如
int *m=new int[5]; // array of 5 elements