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

C/C++给已初始化数组赋值为空时报expected expression错误如何解决

报错原因
  • 你混淆了C风格数组的初始化语法和赋值语法:{}初始化列表仅允许在数组定义时使用,后续整体赋值操作不支持该语法,编译器无法识别{}作为合法的赋值右值,因此抛出expected an expression错误。
  • 你的代码写法本身存在数组越界问题:长度为MAX_SIZE的数组合法下标范围是0 ~ MAX_SIZE-1,array[MAX_SIZE]访问的是数组边界外的内存,属于未定义行为。
解决方案

方案1:遍历赋值(兼容所有C/C++版本)

直接循环遍历数组所有元素,逐个赋值为0即可实现你要的清空效果:

for(int i = 0; i < MAX_SIZE; i++){
    array[i] = 0;
}

方案2:调用标准库函数赋值

引入<algorithm>头文件后使用std::fill完成批量赋值,代码更简洁:

#include <algorithm>
// ... 其余原有代码
fill(array, array + MAX_SIZE, 0);

方案3:改用std::array容器(现代C++推荐)

如果使用C++11及以上版本,将原生C风格数组替换为std::array容器,即可支持{}直接整体赋值:

#include <iostream>
#include <array>
using namespace std;

int main(){
    const int MAX_SIZE = 6;
    array<int, MAX_SIZE> array = {12,-3,24,65,92,11};
    for(int i=0;i<MAX_SIZE;i++){
        cout << array[i] << " ";
    }
    array = {}; // 语法合法,所有元素会被赋值为0
    return 0;
}

内容的提问来源于stack exchange,提问作者BrandonMoon01

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:18:02