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

调用C++函数时报expected primary-expression before 'int'错误如何解决?

错误原因
  • 调用函数时不需要标注参数类型:你在main里调用getInput(int list[], int dim)时写了int这类参数类型,这是函数声明/定义才需要的语法,函数调用只需传入已经定义好的变量即可,编译器把这里的int识别为非法内容,因此抛出主表达式缺失的报错。
  • 未提前定义调用所需的变量:就算删掉参数类型,你也没有在main中声明list数组和dim长度变量,直接传变量名也会报未定义的错误。
  • 额外逻辑缺陷:你定义的getInput函数中完全没有用到传入的dim参数,循环写死了20次,既浪费参数,也有数组越界的风险。
解决步骤
  1. 先在main函数中定义对应大小的数组和长度变量,比如你原逻辑需要输入20个值,就定义长度为20的int数组和对应的长度常量。
  2. 调用getInput时直接传变量名,不要加参数类型声明。
  3. 优化getInput的循环逻辑,用传入的dim作为循环边界,避免数组越界。
修正后的完整代码
#include<iostream>
#include<iomanip>

using namespace std;


void getInput(int list[],int dim);


int main()
{
    // 提前定义数组和长度常量
    const int DIM = 20;
    int list[DIM];
    cout<<"enter number: "<<endl;
    // 调用时仅传变量名,不写参数类型
    getInput(list, DIM);
    // 可选:添加输出验证输入结果
    for(int i=0; i<DIM; i++){
        cout << list[i] << " ";
    }
    return 0;
}


void getInput(int list[], int dim)
{       
    // 用传入的dim做循环边界,不要写死固定值
    for(int i = 0; i<dim; i++)
    {
        cout<<"loc["<<i<<"] ";
        cin>>list[i];
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:01