dyn. Array übergeben
-
Hallo!
Ich versuche hier gerade ein Programm zu schreiben, dass zum Schluss mal das Min & Max eines dynamisch angelegten Array's findet. Jetzt soll auch laut Aufgabenstellung das Array an eine Funktion übergeben werden. Und daran hängts jetzt.
#include <conio.h> #include <iostream> using namespace std; void feld (int GR, int *pV); void minmax(); void ausgabe(); int main() { int *pV, gr=0; cout <<"Min-Max-Suche in einem dyn. Feld" <<endl; cout <<"\nFeldgroesse?: "; cin >>gr; pV = new int[gr]; feld (gr, &pV); delete [] pV; pV = 0; getch(); } void feld (int GR, int *pV1) { int n; srand ( time(NULL) ); for (n = 0; n < GR; n++) { pV1[n]=rand()%20; } for (n = 0; n<GR; n++) { cout << n << ". Element: "; cout << pV1[n] << endl; } }Mein Prob. liegt jetzt im Aufruf der Funktion "feld" und deren Übergabeparameter bzw. nur des einen "pV". gr ist klar. Dieser übergibt (klein) gr an (groß) GR.
Aber wie übergebe ich "pV" richtig?? pV ist ja eigentlich ein Zeiger. Versuche ich &pV zu übergeben, dann sagt der Compiler FEHLER. Übergebe ich &pV[0] oder &pV[gr], dann gehts, aber ich weiss nicht, ob man das so machen kann. Übergebe ich nur pV, dann geht das Programm auch, aber da ich ja in der Funktion einen Zeiger *pV1 habe, dann müsste ich doch eigentlich die Adresse beim Aufruf übergeben, oder ???

Wäre dankbar, wenn ihr mir da mal weiterhelfen könntet. Leider finde ich im Netz dazu auch nichts richtiges

Danke
Tom
-
pV ist in deinem Fall ja ein Array. Ein Array an eine Funktion zu übergeben ist dasselbe, wie einen Zeiger zu übergeben. (Der Compiler wandelt das Argument dann in einen Zeiger auf das erste Arrayelement)
Insofern sind die Aufrufe identisch:
feld(gr, pV); feld(gr, &pV[0]); //bewirkt genau das gleichegenauso sind die Aufrufe "pV[n]" und "pV + n" gleich (-> Zeigerarithmetik)
-
Danke!
gruss
Tom