【发布时间】:2016-02-10 17:58:57
【问题描述】:
我正在尝试编写一个程序,该程序将具有用户输入的数组大小,然后将值放入该数组。我最初尝试过
int sz = 51;
double Arr[sz];
这会导致编译错误。显然,变量的动态分配必须发生,如果可能的话,我宁愿避免这种情况。所以我修改了我的代码(当前状态如下所示),现在只抛出“']'令牌之前的预期主表达式”。有没有办法解决这个问题而我只是没有看到它,还是我需要使用动态分配?
感谢您的宝贵时间!
#include <iostream>
#include <iomanip> //for setprecision
using namespace std;
int sz = 51;
double n=0;
double Arr[0];
void get_input(double Arr[], int &sz){ //gets input
do{
cout<< "Enter size: "<< endl;
cin>> sz;
if (sz<0 || sz>50){
cout<< "Invalid size, enter a value between 0 and 50"<<endl;
}
}while(sz<0 || sz>50);
for( int i=0; i<sz; i++){
cin>> Arr[i];
}
}
double calcSum( double Arr[], int sz){ //finds sum
for(int i=0; i<sz; i++){
n+= Arr[i];
}
return(n);
}
void printArray(double Arr[], int sz){ //prints array elements
for(int i=0; i<sz; i++){
cout<< Arr[i]<< setprecision(2)<<" ";
if(i%7 == 0)
cout<< endl;
}
}
int main()
{
double Arr[sz];
get_input(Arr[], sz); //error here
printArray(Arr[], sz); //error here
return 0;
}
【问题讨论】:
-
您的错误是
get_input(Arr[])没有意义。Arr已经是一个数组,你不需要一直把[]放在那里,除非你想使用下标运算符。此外,sz仍然不是常量表达式。将其设为const int sz = 51;即可。减去您尝试修改的部分sz。 -
这是用于什么编译器的?
-
这是 GNU GCC 编译器
标签: c++ arrays function dynamic