错误访问阵列的内容

时间:2015-06-06 21:59:37

标签: c++ arrays pointers

我正在做一些指针练习,我正面临这个错误?谁知道为什么会这样?

#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]);

1 个答案:

答案 0 :(得分:2)

您正在以错误的顺序取消引用。您(隐含地)拥有的是*(arr[i]),您想要的是(*arr)[i];

您可能会对此感兴趣:Arrays are Pointers?