Feld beschreiben über Zeiger auf Zeiger

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
The92
Beiträge: 2
Registriert: Mo Mai 06, 2013 7:10 pm

Feld beschreiben über Zeiger auf Zeiger

Beitrag von The92 » Mo Mai 06, 2013 7:16 pm

Guten Abend!

Ich hab ein Problem mit meinem C-Programm..
Und zwar rufe ich im main die Funktion generieren auf, und übergebe die Adresse eines Zeigers und einer normalen Variablen. Empfangen wird das ganze mit einem Zeiger und einem Zeiger auf Zeiger. Das Datenfeld wird dann über die Funktion malloc erzeugt. Mit dem schrittweisen debuggen funktioniert das sogar meines Wissens nach. Aber beim Wertezuweisen mit der Funktion rand() tritt beim zweiten Durchlauf der for-Schleife ein Fehler auf..

Kann mir jemand sagen warum und was ich ändern sollte damit es funktioniert?

Code: Alles auswählen

...
int anzahl;
float *z;
generieren(&anzahl,&z);
...

Code: Alles auswählen

void generieren(int *n, float **z)
{
	printf("Wie viele Zufallszahlen sollen erzeugt werden?");
	scanf("%i",n);
	*z=(float *) malloc (sizeof(float)*(*n));
	if (*z)
		for (int i=0; i<(*n); i++)
		{
			**(z+i)=rand();
		}
	else
		printf("Der Speicherbereich war nicht verfügbar!");
}

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Feld beschreiben über Zeiger auf Zeiger

Beitrag von cloidnerux » Mo Mai 06, 2013 7:23 pm

Code: Alles auswählen

  **(z+i)=rand();
Du inkrementierst einen Zeiger auf einen Zeiger auf float um eins.
Was du suchst ist:

Code: Alles auswählen

(*z)[i] = rand();
Was gleichbedeutend mit

Code: Alles auswählen

*((*z)+i) = rand();
ist.

Du inkrementierst einfach nur den falschen Pointer ;)

MfG cloidnerux
Redundanz macht wiederholen unnötig.
quod erat expectandum

The92
Beiträge: 2
Registriert: Mo Mai 06, 2013 7:10 pm

Re: Feld beschreiben über Zeiger auf Zeiger

Beitrag von The92 » Mo Mai 06, 2013 7:28 pm

Genial :D Danke!!

Mit den Zeigern vertu ich mich fast immer..

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Feld beschreiben über Zeiger auf Zeiger

Beitrag von cloidnerux » Mo Mai 06, 2013 7:29 pm

Mit den Zeigern vertu ich mich fast immer..
Ist halt eine Lern- und Erfahrungssache. Nachdem man alle typischen Fehler gemacht hat, weiß man wie es richtig geht^^
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten