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

时间:2012-05-03 23:18:04

标签: c++ arrays pointers

我试图用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;
}

2 个答案:

答案 0 :(得分: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::reverse中的<algorithm>

答案 1 :(得分:0)

使用vectors - 更容易使用