有人能告诉我这句话有什么问题吗?

时间:2020-12-21 16:51:26

标签: c++

这个说法怎么样

int* p = new int[10];
p[10] = 5;
delete[] p;

与此声明不同?

int* p = new int[10];
*p = 5;
delete[] p;

我想知道第一个代码有什么问题。我对 C++ 有点陌生,所以任何解释都值得赞赏。谢谢。

1 个答案:

答案 0 :(得分:3)

p[10] 的行为未定义,因为数组只有 10 个元素,第一个元素在位置 0。您可以访问 p[0](与*p) 到 p[9] 包括在内。

换句话说,C++ 中的数组从零开始。参见例如 Fortran,它们基于一个

相关问题