我正在做一些指针练习,我正面临这个错误?谁知道为什么会这样?
#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]);
答案 0 :(得分:2)
您正在以错误的顺序取消引用。您(隐含地)拥有的是*(arr[i])
,您想要的是(*arr)[i];
。
您可能会对此感兴趣:Arrays are Pointers?