是的,这是用于家庭作业,我的代码要求我输入一个数字,在输入数字0时或当它达到最大整数数ARRAY_SIZE
时终止,所以当我输入我的代码时array[num_elements]=i;
会返回指出Read-only variable is not assignable
的错误。
void read_list(const int array[], int & num_elements) {
int i(1);
cout<<"Enter list of "<< ARRAY_SIZE<<" integers (ending with 0)";
while (i != 0 && num_elements < ARRAY_SIZE) {
cin >> i;
array[num_elements] = i;
num_elements++;
}
}
答案 0 :(得分:8)
嗯,您的数组的字段是只读变量,因此您无法为它们赋值。
删除const
限定符,它应该可以正常工作。
我不确定array[num_elements] = num_elements++
是否有用。
也许你想改为array[num_elements++] = i
?
答案 1 :(得分:1)
您正在使用常量引用来访问数组的元素。您不能使用常量引用分配这些元素。所以你需要从参数声明中删除限定符const。
此功能的代码也是错误的。 例如,它会初始化num_elements并将0分配给数组的最后一个元素。
该功能应该采用以下方式
int read_list( int array[], int max_size )
{
int i = 0;
int x;
std::cout<<"Enter list of no more than " << max_size << " integers (0 - exit): ";
while ( i < max_size && std::cin >> x && x != 0 )
{
array[i++] = x;
}
return i;
}
它可以被称为
int num_elements = read_list( YourArray, ARRAY_SIZE );