定义数组时出现C++错误

Ant*_*yrd 3 c++ arrays pointers

我试图用C++声明一个数组,但我一直收到这个错误.

错误C2440:'初始化':无法从'int*'转换为'int []'

这条线

int b[] = new int[elements]; 
Run Code Online (Sandbox Code Playgroud)

完整代码

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;
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*ter 9

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

int b[] = new int[elements];
Run Code Online (Sandbox Code Playgroud)

int* b = new int[elements];
Run Code Online (Sandbox Code Playgroud)

你应该删除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;
}
Run Code Online (Sandbox Code Playgroud)

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