我正在尝试复制数组的副本,但新副本需要按相反的顺序排列。我的问题是我的reverse
功能,我评论了错误说明的内容,我不明白为什么它会说明这一点?如果copy是指针变量?我仍在苦苦挣扎,我真的只想澄清我做错了什么。我还没有制作一个反向指针变量,一旦我弄清楚为什么我给出了这个错误,我打算这样做。
这是功能
int* reverse(int elements, int size)
{
int* copy = new int [size];
int k =0;
for(int j=size-1; j >=0;j--)
{
copy[k] = size[j]; // Error-> Subscripted value is not an array,pointer or vector
k++;
}
return copy;
}
这里没有功能的整个代码,
#include <iostream>
int* allocation(int);
void output(int*, int);
int* reverse(int*, int);
int main()
{
int size;
std::cout << "Enter the size you want to allocate" << std::endl;
std::cin >> size;
int* array = allocation(size);
std::cout << "Displays the elements of the array";
output(array,size);
return 0;
}
void output(int* array, int size)
{
for(int k=0;k<size;k++)
{
std::cout << " " << array[k];
}
}
int* allocation(int elements)
{
int* ptr = new int[elements];
std::cout << "Enter the elements for size of array." << std::endl;
for(int i =0; i < elements; i++)
{
std:: cin >> ptr[i];
}
return ptr;
}
答案 0 :(得分:2)
reverse
函数的问题在于您没有将指针传递给必须以相反顺序复制的源数组。相反,你已经通过了两个int
。
错误
当您尝试将错误 - &GT;下标值不是数组,指针或向量
size
作为数组添加到size[j]
的下标时,会发生,这很明显,因为size
是int
类型而不是指针,数组或向量
我已经从
更改了你的功能的签名int* reverse(int elements, int size)
到
int* reverse(int *elements, int size)
我已修改你的功能以便这样看
int* reverse(int *elements, int size)
{
int* copy = new int [size];
for(int j=size-1, k=0; j >=0; j--, k++)
{
// copy from elements and not size, elements is the array containing
// the values to be copied, size denotes the size of the array
copy[k] = elements[j];
}
return copy;
}
旁注:
k
放在for循环的范围内。std::vector
或std::array
而不是使用原始数组int* reverse(int*, int);