[C] speicher allokieren

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

  • [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, 12:30.
    Niveau sieht nur von unten aus wie Arroganz!

  • #2
    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.

    Kommentar


    • #3
      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?
      Niveau sieht nur von unten aus wie Arroganz!

      Kommentar


      • #4
        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

        Kommentar


        • #5
          Sehr gut. Danke!
          Niveau sieht nur von unten aus wie Arroganz!

          Kommentar

          Lädt...
          X