C++ 中数组的空波因特异常 [已关闭]

Null poinnter exception with array in C++ [closed]

提问人:Александр Шафиков 提问时间:12/22/2022 更新时间:12/22/2022 访问量:65

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

11个月前关闭。

我试图学习C++的基础知识。现在我正在尝试找出数组。但是当我运行这个小程序时,我的 IDE 引发了空指针异常。我不明白为什么会这样。

include <iostream>

using namespace std;

int main(){
int[] arr = {1, 2, 3};
for(int i=0; i < 4; i++){
  cout << arr[i] << endl;
}
exit 0;
}

我在谷歌上搜索了关于空指针异常的答案。我明白它是什么,但不明白为什么它在我的程序中提出。我的数组有 3 个项目,所以我认为 i<4 语句是正确的

C++ 数组 NullPointerException

评论

4赞 paddy 12/22/2022
不對。带有条件的循环遍历四个值:0、1、2、3。 这是一个基于事实而不是意见的计数练习。i < 4
2赞 Unmitigated 12/22/2022
它应该是for(int i=0; i < 3; i++)
3赞 UnholySheep 12/22/2022
这甚至无法编译,因为它不是有效的语法。 应该并且肯定缺少括号。你忘记了以前int[] arrint arr[]exit 0;#include <iostream>
3赞 Neil Butterworth 12/22/2022
C++ 没有“空指针异常”
3赞 Eljay 12/22/2022
这不是真正的代码。

答:

3赞 Unmitigated 12/22/2022 #1

该数组有三个元素,但您正在尝试在最后一次迭代中访问第四个元素。循环中的条件是错误的。(注意:自 C++ 17 以来,您可以使用 或 计算元素的数量。forsizeof arr / sizeof *arrstd::size(arr)

int arr[] = {1, 2, 3}; 
for (int i = 0; i < 3; i++){
  std::cout << arr[i] << '\n';
}

为了完全避免此类问题,请使用基于范围的 for 循环

for (const int& x : arr) {
    std::cout << x << '\n';
}

评论

0赞 tadman 12/22/2022
基于范围的循环!基于范围的循环!基于范围的循环!forforfor