2015-06-06 32 views
0

我正在做一些指針的練習,我正面臨着這個錯誤?有人知道它爲什麼在那裏?錯誤訪問數組的內容

#include <iostream> 
using namespace std; 

bool expandarray(int **arr, int oldsize, int newsize) 
{ 
    if(oldsize > newsize) 
     return false; 
    int *newarray = new int[newsize]; 
    for(int i = 0; i < newsize; i++) 
    { 
     newarray[i] = 0; 
    } 
    for(int i = 0; i < oldsize; i++) 
    { 
     newarray[i] = *arr[i]; 
    } 
    delete [](*arr); 
    *arr = newarray; 
    return true; 
} 

int main() 
{ 
    int * array = new int[5]; 
    for(int i = 0; i < 5; i++) 
    { 
     array[i] = i+6; 
     //cout << array[i] << " "; 
    } 
    expandarray(&array,5,7); 
    system("pause"); 
} 

它沒有得到arr的元素。錯誤發生在newarray[i] = *(arr[i]);

回答

2

您正在以錯誤順序解除引用。你有(隱含)是*(arr[i]),你想要的是(*arr)[i];

您可能會感興趣:Arrays are Pointers?