[gelöst] Speicherplatz anfordern mit malloc()



  • Hallo an alle,

    wir sollen in der Uni ein bestehendes Programm erweitern, welche Messwerte verwaltet.
    Deswegen hat uns unser Prof quasi sowas wie eine Lite Version gegeben die jetzt ausgebaut werden soll.

    An einer Stelle will er einen neuen Messwert hinzufügen, dazu fordert er mit malloc() Speicherplatz an:

    struct messung * ptr;
    if ((ptr = (struct messung *) malloc(sizeof(struct messung))) == NULL)
    		return 1; /* Fehler: kein Speicher frei */
    

    Meine Frage ist nun was das *(struct messung ) vor malloc bedeutet?

    malloc() liefert doch einen Zeiger zurück der auf den reservierte Speicher zeigt und ptr wurde als Zeiger deklariert.



  • Mal ehrlich, lernt ihr auf der uni kein c, oder was??
    Es steht in jedem C-Tutorial drinnen was sowas heißt.



  • Meine erster Gedanke war das es sich um einen Cast handelt.
    Aber wenn malloc() eine Addresse liefert, dann braucht man doch keinen Cast, weil ptr doch auch ein Zeiger ist.

    nixx schrieb:

    Mal ehrlich, lernt ihr auf der uni kein c, oder was??
    Es steht in jedem C-Tutorial drinnen was sowas heißt.

    1. Würden wir kein C lernen, würden wir wohl auch keine Aufgaben bekommen in denen wir C benutzen sollen oder?
    2. Die Antwort auf jede Frage die hier gestellt wird, steht bestimmt auch in irgendeinem Tutorial, Buch oder sonst wo und trotzdem gibt es Foren wie dieses in denen Leute die sich mit etwas auskennen anderen Leuten die zu etwas eine Frage haben helfen.
    3. Würde ich dein Verhalten konsequent auf dich anwenden, müsste ich dir jetzt die Frage stellen: "Mal ehrlich, hast du in der Schule kein Deutsch gehabt?" Oder warum schreibst du uni klein? Das steht in jedem Duden drin.

    Nimms nicht zu persönlich, kann ja sein das die Frage in deinen Augen zu leicht ist und jeder Depp die Antwort kennt, aber auch du hast irgendwann mal angefangen, vergiss das nicht.



  • Hallo,

    Nestor schrieb:

    Meine Frage ist nun was das *(struct messung ) vor malloc bedeutet?

    Das nennt sich eine Typumwandlung auch Cast genannt. Hier wird der Rückgabetyp void* in den Typ
    struct messung* umgewandelt.
    Das ist in C aber nicht nötig. Weitere Infos dazu gibt es hier
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-206606.html

    Gruß,
    B.B.



  • Alles klar danke.

    Ich dachte das bräuchte man bei Zeigern nicht, weil ein Zeiger einfach auf eine Adresse zeigt, egal ob da ein Integer gespeichert werden soll oder was anderes.
    Jetzt weiß ich es ja, danke.


Anmelden zum Antworten