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

C++报错expected primary-expression before ‘]’ token 向量相加代码排查

C++向量相加代码错误排查与修正

你遇到的expected primary-expression before ‘]’ token报错直接来源于return vector_add_result[]行,C++语法不允许空的下标运算符[],即使补充索引也只能返回单个double值,无法直接返回整个数组,这只是代码中的问题之一,所有错误整理如下:

  • 头文件引入语法错误:#include语句结尾不能加分号,所有头文件行末尾的;都要删除
  • 函数参数定义错误:vector_add声明的参数是两个double类型的单个值,但是调用时传入的是二维数组,且函数内部直接访问了仅在main函数作用域有效的vector1、vector2变量,属于非法访问
  • for循环语法错误:循环条件的分隔符应该是分号,正确写法为for (int i=0; i<3; i++)
  • 数组定义错误:double add_result[3][0]的第二维长度为0,属于非法定义,应该改为double add_result[3][1]
  • 函数调用与返回值逻辑错误:你定义的函数名为vector_add,调用时却写了vector_add_result,且C++不支持直接返回栈上分配的原生数组
  • 输出逻辑错误:不能直接用std::cout输出整个数组,需要逐个输出三个分量

修正后的可运行代码

#include<iostream>
#include<cmath>
#include<string>

// 将结果数组作为参数传入函数修改,避免返回数组的问题
void vector_add(double vectorA[3][1], double vectorB[3][1], double result[3][1])
{
    for (int i=0; i<3; i++)
    {
        result[i][0] = vectorA[i][0] + vectorB[i][0];
    }
}

int main ()
{
    double vector1[3][1];
    std::cout<<"Input vector1 x:"<<std::endl;
    std::cin>>vector1[0][0];
    std::cout<<"Input vector1 y:"<<std::endl;
    std::cin>> vector1[1][0];
    std::cout<<"Input vector1 z:"<<std::endl;
    std::cin>> vector1[2][0];

    double vector2[3][1];
    std::cout<<"Input vector2 x:"<<std::endl;
    std::cin>>vector2[0][0];
    std::cout<<"Input vector2 y:"<<std::endl;
    std::cin>> vector2[1][0];
    std::cout<<"Input vector2 z:"<<std::endl;
    std::cin>> vector2[2][0];

    double add_result[3][1];
    vector_add(vector1, vector2, add_result);

    std::cout<<"vector addition result: x="<<add_result[0][0] <<" y="<<add_result[1][0]<<" z="<<add_result[2][0]<<std::endl;

    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:45:03