C ++的错误定义阵列时 [英] C++ error when defining array

查看:136
本文介绍了C ++的错误定义阵列时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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


  

错误C2440:初始化:不能从'诠释*'转换为'廉政[]


此行

  INT B〔] =新的INT [内容]

展开code

 为int * reverseArray(int类型的[],诠释元素)
{
    为int *指针;
    INT X =元素-1;
    INT B〔] =新的INT [内容]
    指针= B [];
    的for(int i = 0; I<要素;我++)
    {
        B〔I] = A [x--];
    }
    返回指针;
}


解决方案

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

  INT B〔] =新的INT [内容]

 为int * B =新INT [内容]

和你应该只删除指针并简单地返回 B ,所以

 为int * reverseArray(int类型的[],诠释元素)
{
  INT X =元素-1;
  为int * B =新INT [内容]
  的for(int i = 0; I<要素; ++ I)
    B〔I] = A [x--];
  返回b;
}

但是,你真的应该考虑使用的std ::矢量。如果使用的std ::矢量,扭转数组,你可以简单地使用的std ::逆转<算法方式>

Im trying to declare an array in C++ but i keep getting this error.

error C2440: 'initializing' : cannot convert from 'int *' to 'int []'

for this line

int b[] = new int[elements]; 

Full Code

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;
}

解决方案

new returns a pointer, so you should change

int b[] = new int[elements];

to

int* b = new int[elements];

and you should just remove pointer and simply return b, so

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;
}

But you should really consider using std::vector. If you use a std::vector, to reverse the array, you can simply use std::reverse from <algorithm>.

这篇关于C ++的错误定义阵列时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆