Wie übergibt man ein Zeiger-Array an eine Funktion als Referenz? Ich übergebe ein dynamisches Array an eine Funktion, die innerhalb der Funktion korrekt funktioniert, aber ich bin nicht in der Lage, das Zeigerarray als Referenz zu übergeben. Ich weiß, dass Array standardmäßig als Verweis übergeben wird. DankWie übergibt man ein Zeiger-Array an eine Funktion als Referenz?
#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;
}
Da Sie wissen, dass ein Array standardmäßig per Referenz übergeben wird, verstehe ich nicht, was Sie vielleicht fragen. Was möchten Sie * stattdessen * tun, um ein Array als Referenz zu übergeben? – wallyk
Sie möchten einen Zeiger als Referenz übergeben. Übergeben Sie den Zeiger als Referenz. 'int * & arr' – user4581301
Sie können [' std :: vector '] (http://en.cppreference.com/w/cpp/container/vector) anstelle von Arrays und deren Größen verwenden. Verwenden Sie ['push_back'] (http://en.cppreference.com/w/cpp/container/vector/push_back), um Daten zu einem' Vektor' hinzuzufügen. –
anatolyg