ポインタ配列を参照渡しとして関数に渡すにはどうすればよいですか? 関数内で正しく機能している関数に動的配列を渡していますが、参照渡しとしてポインタ配列を渡すことができません。 配列が参照渡しとしてデフォルトで渡されることはわかっています。あなたはint
とarr
のSIZE
は、このメモリを指している保存するためのメモリを割り当てたint *arr = new int[SIZE];
呼び出すと おかげポインタ配列を関数に渡して参照渡しする方法はありますか?
#include <iostream>
using namespace std;
void printArray(int *arr, int SIZE){
for (int i = 0; i < SIZE; i++)
cout << arr[i] << ' ';
cout << endl;
}
void addData(int *arr, int &SIZE, int data){
int *temp = new int[SIZE];
for (int i = 0; i < SIZE; i++){
arr[i] = i;
temp[i] = arr[i];
}
printArray(temp, SIZE); //Output is: 0 1 2 3 4
printArray(arr, SIZE); //Output is: 0 1 2 3 4
delete arr;
arr = NULL;
arr = new int[SIZE+1];
for (int i = 0; i < SIZE; i++)
arr[i] = temp[i];
arr[SIZE] = data;
SIZE++;
printArray(arr, SIZE); //Output is: 0 1 2 3 4 5
delete temp;
temp = NULL;
}
int main(){
int SIZE = 5;
int *arr = new int[SIZE];
addData(arr, SIZE, 5); //Extend the array by one index to insert data
printArray(arr, SIZE); //Output is: Some garbage values but Output should be: 0 1 2 3 4 5
cout << endl;
system("PAUSE");
return 0;
}
配列はデフォルトで参照渡しされることがわかっているので、私はあなたが何を求めているのか理解していません。配列を参照渡しする代わりに*何をしたいですか? – wallyk
参照によってポインタを渡したいとします。ポインタを参照渡しします。 'int *&arr' – user4581301
配列とそのサイズの代わりに[' std :: vector '](http://en.cppreference.com/w/cpp/container/vector)を使うことができます。 '' push_back''(http://en.cppreference.com/w/cpp/container/vector/push_back)を使って 'vector'にデータを追加してください。 –
anatolyg