调用C++函数时报expected primary-expression before 'int'错误如何解决?
错误原因
- 调用函数时不需要标注参数类型:你在main里调用
getInput(int list[], int dim)时写了int这类参数类型,这是函数声明/定义才需要的语法,函数调用只需传入已经定义好的变量即可,编译器把这里的int识别为非法内容,因此抛出主表达式缺失的报错。 - 未提前定义调用所需的变量:就算删掉参数类型,你也没有在main中声明
list数组和dim长度变量,直接传变量名也会报未定义的错误。 - 额外逻辑缺陷:你定义的
getInput函数中完全没有用到传入的dim参数,循环写死了20次,既浪费参数,也有数组越界的风险。
解决步骤
- 先在main函数中定义对应大小的数组和长度变量,比如你原逻辑需要输入20个值,就定义长度为20的int数组和对应的长度常量。
- 调用
getInput时直接传变量名,不要加参数类型声明。 - 优化
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
相关产品推荐
相关产品推荐

