void - zeiger konvertierung



  • int a = 10;
       char *string = "void-Zeiger";
       void *ptr;
       /* void-Zeiger auf Variable int a */
       ptr = (int *)&a;
       printf("ptr = %p a=%p\n",ptr,&a);
       /* void-Zeiger auf string */
       ptr = (char *)string;
    

    mmh... hab leider die void funktionen etwas vergessen...🙄 deshalb muss ich mal nachfragen..
    also ich versteh die konvertierungen nicht so recht... was tut man hier eigentlich? im tutorial hab ich verstanden als würde ptr in einen int bzw. char zeiger konvertiert werden... aber ich würd eher sagen, dass a in einen int zeiger transformiert wird aber wieso wird dann string nochmal in einen char pointer konvertiert ? kann man das nicht weglassen?? aber dann wärs:

    void *x = int *y

    da wäre dan wohl die einzige möglichkeit, dass void man void halt alles zuweisen kann oder wie?
    wie zb:

    void x = 5
    void y = "oh!!"
    ...

    also ein bisschen wie der typ var in basic

    und halt auch umgekehrt im falle von zeiger

    int *i = (void 😉 0 ; (= NULL)

    #define NULL (void *) 0
    
    int main(void) {
       int *ptr = NULL;
       int i = NULL;      // Falsch
       return EXIT_SUCCESS;
    }
    

    und hier geht die zeile dann wohl nicht, weil i kein zeiger ist oder wie?

    thx & mfg!!! 👍



  • wo hast du den ersten codefetzen her? erscheint mir irgendwie nicht so sonderlich sinnvoll... diese ganzen void* zeiger braucht man afaik eigentlich nur wenn man direkt mit rohem speicher arbeitet und für irgendwelche unbekannten objekte genügend platz allokieren muss...
    Wenn das nicht der fall ist, sollte man imho bei den normalen variablentypen bleiben, dazu sind die ganzen typen doch da...

    da wäre dan wohl die einzige möglichkeit, dass void man void halt alles zuweisen kann oder wie?
    wie zb:

    void x = 5
    void y = "oh!!"

    ne sowas geht nicht.
    Du kannst in void* zeigern alle anderen speichertypen speichern (aber dann bitte nicht wundern, wenn bei der naiven zeigerarithmetik totaler müll rauskommt = void*-zeiger hat keine ahnung, wie groß das objekt ist, auf das er physikalisch zeigt)
    Aber irgendwie fallen mir im momnet keine wirklichen anwendungsgebiete für sowas ein. Solang man nicht selbst irgendwelche speicherverwaltungsdinger zusammenbastelt...



  • nee das war nur in nem tutorial, um void zu verdeutlichen



  • dann überspring einfach das kapitel... selbstständig speicher zu verwalten hast du wahrscheinlich noch nicht vor, und wenn du mit anderen beispielen mit zeigern herumexperementierst, wird dir das alles irgendwann auf einmal ganz klar un verständlich erscheinen... 👍



  • ich bin kein anfänger mehr^^ auch wenn das durchaus so aussieht lol bin fortgeschritten, war aber ne zeit abwesend in der szene jetzt muss ich das wieder aufarbeiten. das wollte ich nur mal sagen nicht dass hier jeder denkt ich wär noch n noob^^ 😃

    thx & mfg für deine hilfe!!!!! 👍 😋



  • achso, sry 🙂 hätt ja auch sehn können, dass du schon n paar dutzend beiträge geschrieben hast, naja... Hab halt keine augen im kopf^^ 😃


Anmelden zum Antworten