2012-05-03 61 views
3

我試圖在C++中聲明一個數組,但是我不斷收到這個錯誤。定義數組時定義C++錯誤

錯誤C2440:初始化:不能從 '詮釋*' 轉換爲 '廉政[]'

此行

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

您所要求的內存泄漏,即使你修復價值的分配和交換。相反,考慮使用'std :: vector ' – AJG85

回答

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來倒轉陣列,則可以簡單地使用<algorithm>中的std::reverse

+0

指針= b它拋出不能從'int * []'轉換爲'int *' –

+0

我不允許使用矢量...... class assignment –

+0

@atbyrd在那請記住他們的未來。我在答案中加了一點。 –

0

使用vectors - 很多更容易使用

+2

好的,但這對初學者無法理解任何東西,所以-1。理解概念比被告知使用一個庫更有用(當然,他應該使用一個向量,但是與當前問題相切)。 –

+0

我不能將逐字放入圖書館。只是不想讓那個人通過使用一個圖書館可以讓這個人獲得更多的收益。如果他們想問任何問題,我都不會發生爭吵或蔑視。 –

+0

好吧,我只是不認爲這是一個初學者有用的答案。 –