配列と配列のサイズを引数として受け入れる関数を書く必要があります。この関数は、引数配列の2倍の新しい配列を作成する必要があります。関数は引数配列の内容を新しい配列にコピーし、 - で第2配列の未使用要素を初期化する必要があります。関数は新しい配列へのポインタを返さなければなりません。 これは私が完了する必要があるプロンプトです。私は関数内で必要な配列を取得しますが、main関数には持ち込まれていません。関数の戻り値が返されていません
void moveOver(int *arr, int size)
{
int *arrp=nullptr;
arrp= new int[size + 1];
//arrp[0] = 0;
for (int i = 1; i <= size; i++)
{
arrp[i] = arr[i-1];
}
arr = new int[size + 1];
*arr = *arrp;
for (int i = 0; i < size + 1; i++) {
//cout << *(arr+i) << endl;
cout << arrp[i] << endl;
}
}
int main()
{
const int size = 4;
int arr[size] = { 1,2,3,4 }, *arrptr=nullptr;
arrptr = arr;
moveOver(arr, size);
for (int i = 0; i <=size ; i++) {
cout << arr[i] << endl;
}
return 0;
}
印刷すると、必要な5つではなく4つのインデックスだけが印刷されます。任意のアドバイスをいただければ幸いです。また、私はポインタと配列を使用すると仮定、私はベクトルを使用することはできません
なぜ「arr」に*新しい*メモリを割り当てていますか?以前の配列を上書きする前に、 'arr'からメモリを削除しませんでした。 –
ところで、 '* arr = * arrp;'は最初のスロットだけをコピーします。配列をコピーするには 'std :: copy'が必要です。ベクターは使いやすくなっています。 –
すべての助けをいただきありがとうございます。私はベクターを使いたいと思っていますが、この割り当てでは配列を使用したいと考えています。 –