![]() |
C: Einfache Zeigeroperation, Programmabsturz (wieso?)
Hallo;
wieso stürzt mein Programm bei folgender einfacher Zeigeroperation ab? Es geht darum, ein int-array durchzumischen. Dazu habe ich die Funktion Swap geschrieben, die ist aber hier nicht wichtig weil das Prog schon vorher abstürzt:
Code:
und testweise rufe ich diese Funktion auf:
void GenerateRandomArray(int *array[],int laenge)
// array = zeiger auf ein array // laenge = wie viele zeichen des arrays zufällig vertauscht werden sollen { int i; srand(GetTickCount()); // Zuerst alle Zahlen der Reihe nach reinspeichern: for (i=0; i<laenge; i++) *array[i]=i; // Bei diesem Befehl stürzt das Prog ab // und jetzt zufällig vertauschen: for (i=0; i<laenge; i++) Swap(&array[i],&array[rand()%laenge]); }
Code:
doch das hat nicht funktioniert.
int ar[]={1,2,3,4};
GenerateRandomArray(ar,4); Ich habe es auch so probiert:
Code:
was natürlich falsch ist, und so:
GenerateRandomArray(&ar,4);
Code:
aber keine Variante funktioniert.
GenerateRandomArray(&ar[0],4);
Wo ist der Fehler? |
Re: C: Einfache Zeigeroperation, Programmabsturz (wieso?)
Array-Variablen in C sind ohnehin Zeiger. Du kannst dir also sparen, einen Zeiger auf das Array zu übergeben.
|
Re: C: Einfache Zeigeroperation, Programmabsturz (wieso?)
Also so?
Code:
error C2100: Zeigeroperation ungueltig
void GenerateRandomArray(int array[],int laenge)
rein logisch gesehen müsste es so auch gehen:
Code:
error C2109: Index benoetigt ein Feld oder einen Zeigertyp
void GenerateRandomArray(int array,int laenge)
und dann innerhalb der funktion: error C2100: Zeigeroperation ungueltig |
Re: C: Einfache Zeigeroperation, Programmabsturz (wieso?)
Funktionskopf:
Code:
void GenerateRandomArray(int *array, int laenge)
Aufruf:
Code:
GenerateRandomArray(ar, 4);
In der Funktion:
Code:
array[i] = i;
merke: aTestArray (ohne [n]) == die Adr. des 1. Elementes. Pointer können als Array behandelt werden, und werden durch [n] automatisch dereferenziert. mfg |
Re: C: Einfache Zeigeroperation, Programmabsturz (wieso?)
Jetzt gehts!
Danke! |
Re: C: Einfache Zeigeroperation, Programmabsturz (wieso?)
Zitat:
Code:
um klar zu machen, dass ein Array erwartet wird (auch wenn das über den Parameternamen schon deutlich wird, aber das muss ja nicht immer so sein).
void GenerateRandomArray(int array[], int laenge)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz