[C] speicher allokieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Peter_Panther
    antwortet
    Sehr gut. Danke!

    Einen Kommentar schreiben:


  • penizillin
    antwortet
    PHP-Code:
    if( *zeiger != NULL
    benutze statt
    Code:
    *zeiger = (void*)("f");
    lieber strcpy.

    Ansonsten, int oder void bei main? Kann man halten wie man will, oder?
    nein. http://www.it-academy.cc/article/144...ogramm|outline

    Einen Kommentar schreiben:


  • Peter_Panther
    antwortet
    Danke, habe es so gemacht:

    Code:
    int allokiere(int laenge, void **zeiger)
    {
         *zeiger = (void *)malloc(laenge);
         if( zeiger != NULL)
         {
             printf("Allozierung war erfolgreich\n");
             *zeiger = (void*)("f");
             printf("%s\n",         (char*)(*zeiger));
         }
         else
         {
             printf("Aetsch, hier ging was schief\n");
         }
         return 0;
    }
    
    int main()
    {
    
         void *Name;
         allokiere(1, &Name);
         printf("%s", Name);
    
         return 0;
    }
    Okay, speicherfreigabe muss ich noch einbauen.
    Ansonsten, int oder void bei main? Kann man halten wie man will, oder?

    Einen Kommentar schreiben:


  • penizillin
    antwortet
    einer Meinung nach tut es das auch, oder?
    nein.

    um den inhalt von "Name" (übrigens - kleinschreiben) zu verändern, muss die funktion
    Code:
    void **zeiger
    als parameter erwarten. der aufruf muss entsprechend mittels &name erfolgen. und für eine stringzuweisung würde ich immer noch
    Code:
    strcpy(*zeiger, "foo");
    nehmen.

    die ausgabe dann wie gewohnt mit
    Code:
    printf("%s\n", (char*)name);
    p.s. free() nicht vergessen.

    p.p.s. es heißt "int main()", nicht void.

    Einen Kommentar schreiben:


  • Peter_Panther
    hat ein Thema erstellt [C] speicher allokieren.

    [C] speicher allokieren

    Hallo Gemeinde,

    ich moechte eine Funktion aufrufen (aus main) die Speicher allokiert.
    Wie ihr seht, hat diese Funktion zwei Parameter
    1. int - Groesse des zu allokierenden Speichers
    2. typenlosen pointer

    In main() soll dann ein byte allokiert werden und mit einem charakter befuellt werden. Meiner Meinung nach tut es das auch, oder? ;-)
    Die Ausgabe klappt zumindest soweit.

    Wie kann ich denn den Wert des Pointers in main() nochmal ausgeben?!

    Achso, der Code:

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int allokiere(int laenge, void *zeiger) {
    
    	zeiger = (void *)malloc(laenge);
        if( zeiger != NULL) {
         	printf("Allozierung war erfolgreich\n");
            char *zeiger = "f";
            printf("%s\n", zeiger);
        } else {
         	printf("Aetsch, hier ging was schief\n");
        }
    
        return 0;
    }
    
    void main() {
    
    	void *Name;
        allokiere(1, Name);
    
        getchar();
    }
    Zuletzt geändert von Peter_Panther; 05.07.2007, 13:30.
Lädt...
X