3

我试图在 C++ 中声明一个数组,但我不断收到此错误。

错误 C2440:“正在初始化”:无法从“int *”转换为“int []”

对于这条线

int b[] = new int[elements]; 

完整代码

int* reverseArray (int a[] ,int elements)
{
    int *pointer;
    int x= elements-1;
    int b[] = new int[elements];
    pointer=b[];
    for (int i= 0; i < elements; i++)
    {
        b[i] = a[x--];
    }
    return pointer;
}
4

2 回答 2

9

new返回一个指针,所以你应该改变

int b[] = new int[elements];

int* b = new int[elements];

你应该删除pointer并简单地返回b,所以

int* reverseArray (int a[] ,int elements)
{
  int x = elements-1;
  int* b = new int[elements];
  for (int i = 0; i < elements; ++i)
    b[i] = a[x--];
  return b;
}

但是你真的应该考虑使用std::vector. 如果您使用std::vector, 来反转数组,您可以简单地使用std::reversefrom <algorithm>

于 2012-05-03T23:19:13.947 回答
0

使用向量- 更容易使用

于 2012-05-03T23:20:31.353 回答