You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++数组运行触发Null pointer exception,求教异常原因

问题分析与修复

你的代码里存在几处关键错误,直接导致了异常和编译问题:

  1. 数组声明语法错误
    C++不支持int[] arr这种Java风格的数组声明,正确写法是int arr[] = {1, 2, 3};。这个语法错误会让编译器无法正确识别数组变量,进而引发后续访问时的空指针类异常。

  2. 数组越界访问
    你的数组只有3个元素,合法索引是0、1、2,但循环条件写的i < 4,当i=3时,访问arr[3]属于数组越界访问,这是C++中的未定义行为,可能触发空指针异常、程序崩溃或输出垃圾值。正确的循环条件应该是i < 3,更稳妥的方式是用sizeof(arr)/sizeof(arr[0])自动计算数组长度:

for(int i=0; i < sizeof(arr)/sizeof(arr[0]); i++)
  1. exit函数调用错误
    exit 0;缺少括号,正确写法是exit(0);。另外在C++的main函数中,直接使用return 0;会更规范,无需调用exit。

修复后的完整代码:

#include <iostream>

using namespace std;

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

补充说明:数组越界访问在C++中不会抛出明确的标准异常,属于未定义行为,表现形式不确定,一定要严格避免。

内容的提问来源于stack exchange,提问作者Александр Шафиков

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:15:46