数组操作
|
因此,我试图避免使用向量来做到这一点,我知道这样做会更容易,但是我试图更好地理解指针和数组。那么有没有一种方法可以在不使用向量的情况下扩展和移位数组呢?这是我到目前为止所拥有的:
int *expand(int *&arr, int size)
{
int *newArray;
size = size * 2;
newArray = new int[size * 2];
for (int index = 0; index < size; index++)
newArray[index] = arr[index];
return newArray;
}
没有找到相关结果
已邀请:
6 个回复
很缴
的值,因此无需通过引用传递地址。如果确实要更改该值,则需要在返回newArray之前添加新的代码行:
如果典型的呼叫方式是
那么您还需要注意忽略别名的选项。而且,您必须假设在
以内,大小总是增加一倍,并在此范围之外跟踪自己。 而且,您的代码有一个可怕的错误。大小加倍,然后用作源数组的数组限制。然后,它泄漏以前为
分配的内存。这是人们使用
的一个很好的理由。 :-)到目前为止,大多数错误都在该库之外。
如果您使用的是
和
而不是
和
,则可以使用
。
扫窟
请注意* sizeof(int)。这很重要:) realloc确保* old_array *的内容可以在* new_array *中找到(它是相同的指针,或者内容已被复制)。有关详细信息,请参见链接。
脾萌
到位:
门锑腺潮
草票
-将其作为参考传递就表明了您的意图-或您打算向
arr分配0。
雄鞋谋塘