Seite 1 von 1

Frage zu den Verketteten Listen

Verfasst: Mo Apr 06, 2015 3:10 pm
von Ivo
hallo an allen,
ich habe eine Frage. Ich habe eine Funktion, die so lautet:

Code: Alles auswählen

TrackDescription *copyTrackData(const TrackDescription *orig)                            /* const TrackDescription
															   * wird im Programm nicht
															   * mehr verändert
															   */

{
	TrackDescription *anfang;
	anfang =(TrackDescription*) malloc(sizeof(TrackDescription));                       /* leifert ein Zeicher von type TrackDescription  zurück */                 
	if(anfang != NULL)
	{ 	
		anfang->begin_pos = orig->begin_pos;
		anfang->end_pos	  = orig->end_pos;
		anfang->max_speed = orig->max_speed;
		anfang->next      = NULL;
	}
	else{

		printf("Kein Speicher vorhanden!\n");
		return NULL;	/*!!! return der NULL poiner oder einfach 0 !!!*/
	}

	return anfang;
}
ich verstehe nicht wann man ein Funktionspointer nimmt und wann nicht. Bsp hier TrackDeskription *copyTrackData(....).
ich habe mir gedacht es ist das gleiche wie Bsp. die Func char *strcpy(*char *s1, char *s2) aber bin nicht mehr sicher. Ist es immer ein Funktionszeiger gebraucht, wenn man als Ausgabetype eine Struktur hat oder? Es wäre super , wenn jemand es erklären kann.
Vielen Dank!

Re: Frage zu den Verketteten Listen

Verfasst: Mo Apr 06, 2015 3:13 pm
von cloidnerux
ich verstehe nicht wann man ein Funktionspointer nimmt und wann nicht.
Du nimmst überhaupt keinen "Funktionspointer".
Ein solcher Ausdruck:

Code: Alles auswählen

myType * myFunc()
bedeutet jediglich, dass du ein Wert vom Typ "myType*" zurück gibst, also einen Pointer auf "myType".
Man macht das, um Zeit und Speicher zu sparen.

Re: Frage zu den Verketteten Listen

Verfasst: Mo Apr 06, 2015 3:47 pm
von Ivo
alles klar, wenn um großen Datenmenge geht, nimmt man lieber einen Zeiger um Zeit und Speicher zu sparen.
so zusagen wie Call by Reference.
danke dir