C Mehrdimensionales (2D) in Funktion zurückgeben und Arbeiten mit der Funktion

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hi,

ich finde leider kein für mich geeignetes simples Beispiel, wenn man ein 2 dimensionales Array in einer Funktion zurück gibt und damit arbeitet.

Beispielquelltext:
Code:
int** generateRandomArray(int index,int wert)
{
	int array[index-1][wert-1];
	//Array mit zufälligen Werten füllen und danach mit return zurück geben
	return array;
}

void main()
{
	//...

	//Verarbeitung
	anz = atoi(buffer);
	int r_array[][] = generateRandomArray(anz,1);

	puts("Index\tZufallszahl");
	for(i=0;i<anz;i++)
	{
		printf("%d\t%d",i,r_array[i][0]);
	}
}
Ich möchte das zurückgegebene Array aus generateRandomArray in der Main jetzt über Schleifen etc. ausgeben. Aber leider bekomme ich so bei der Zuweisung/Funktionsaufruf Probleme.
"array type has incomplete element type"

mfg
 
Zuletzt bearbeitet:
So wie du es machst in deiner funktion bekommst du ziemlich schnell einen speicherfehler, da du auf dem Stack arbeitest ;).

D.h. du musst malloc verwenden.

Zum zweiten ist ein 2D Array eigentlich auch nur ein 1-dim array mit "spezieller" struktur. D.h. es reicht wenn du einen Pointer übergibst.

Ein int** ist ein Pointer auf einen Pointer von int. ;)

Edit: Achso das was du bekommst ist ein Compiler Fehler wegen falschem Typ.
 
Zuletzt bearbeitet:
titanskin schrieb:
So wie du es machst in deiner funktion bekommst du ziemlich schnell einen speicherfehler, da du auf dem Stack arbeitest ;).

D.h. du musst malloc verwenden.

Zum zweiten ist ein 2D Array eigentlich auch nur ein 1-dim array mit "spezieller" struktur. D.h. es reicht wenn du einen Pointer übergibst.

Ein int** ist ein Pointer auf einen Pointer von int. ;)

Edit: Achso das was du bekommst ist ein Compiler Fehler wegen falschem Typ.

Sorry, aber ich bin ein totaler Noob auf dem Gebiet :D
Was ist ein Stack? Warum bekomme ich einen Speicherfehler?

malloc habe ich auch noch nie gehört, werde ich mir aber jetzt mal anschauen.

Warum falscher Typ?
 
Ich würde an deiner Stelle mal nach "Dynamic Memory Allocation in C" googeln, mich einlesen und verstehen und dann nochmal an dein Problem rangehen
 
Zurück
Oben