Unterschied bei void pointer?



  • Hallo kann mir da wer den unterschied sagen:

    int i=10;
    char c ='a';
    void *ptr;
    
    ptr = (int *)&i;
    *((int *)ptr)=100;
    printf("i=%d\n",i); 
    ptr = (char *)&c; 
    *(char *)ptr='x';
    printf("c=%c\n",c);
    
    char c ='a';
    void *ptr;
    
    ptr = &i;
    *ptr=100;
    printf("i=%d\n",i); 
    ptr = &c; 
    *ptr='x';
    printf("c=%c\n",c);
    

    ich steh da irgendwie an, was bringen mir der typecast auf int und char?

    oder ist das überhaupt nicht das selbe die zwei?
    😡



  • int i=10;
    char c ='a';
    void *ptr;
    
    ptr = (int *)&i; // cast unnötig
    *((int *)ptr)=100; // cast nötig, da void* nicht dereferenziert werden kann
    printf("i=%d\n",i);
    ptr = (char *)&c; // cast unnötig
    *(char *)ptr='x'; // cast nötig, da void* nicht dereferenziert werden kann
    printf("c=%c\n",c);
    
    char c ='a';
    void *ptr;
    
    ptr = &i;
    *ptr=100; // Compilerfehler, da void* nicht dereferenziert werden kann
    printf("i=%d\n",i); 
    ptr = &c; 
    *ptr='x'; // Compilerfehler, da void* nicht dereferenziert werden kann
    printf("c=%c\n",c);
    

    Sage ich dir als Esslinger.


Anmelden zum Antworten