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.