2015-06-06 10 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"); 
} 

Это не получает элементы обр. Ошибка возникает при newarray[i] = *(arr[i]);

ответ

2

Вы будете вызывать разыменование в неправильном порядке. Что у вас (неявно) - *(arr[i]), а то, что вы хотите, - (*arr)[i];.

Это может заинтересовать: Arrays are Pointers?

Смежные вопросы