【发布时间】:2019-03-03 13:27:21
【问题描述】:
这可能是一个菜鸟问题,但我仍然很困惑为什么会发生这种情况。 所以这段代码工作得很好:
int *m,g;
g=1;
m[0]=1;
cout<<m[0];
这个报错:
int *m;
m[0]=1;
cout<<m[0];
这可能是一个错误吗?
【问题讨论】:
-
是的,这是您代码中的错误。这是未定义的行为,因为指针尚未初始化。
-
您能否更具体一点,为什么它在第一种情况下有效?
-
int* m;然后m[0]=1是一个错误。对m[any index]的任何其他访问也是如此。 -
为什么它在第一种情况下有效?不幸的是,未定义的行为有时会返回您期望的结果。但是,您根本不能指望它,即使您更改程序中不相关的行,它也可能在另一台计算机或同一台计算机上失败。
-
感谢您的帮助
标签: c++ arrays codeblocks element