Kuinka saan "sijoitettua" char-osoittimeen vaikkapa Uint8-tyyppisen osoittimen?
Vastahan kysyit tuolla jotakin muuta tyypinmuunnosta. Samalla tavalla.
char *A;
Uint8 *B;
A = (char *)B; // Pitäisi toimia
A = (char *)((void *)B); // Jos kääntäjä on nipo, tehdään ensin void *
// Tai sitten hienosti unionilla
union TPointteri {
char *CharP;
Uint8 *Uint8P;
};
TPointteri C;
Uint8 *D;
C.Uint8P = D; // Ja nyt se on C.CharP:ssakin
// Tai memcpy:lla
memcpy(&CharPointer, &Uint8Pointer, sizeof(char *));Joo niin kysyin, mutta en osannut soveltaa sitä tähän ongelmaan. Näköjään nuo osoittimet eivät ole vieläkään minulle täysin selviä, opinpahan jotain uutta niistäkin. Kiitos taas kerran!
Edit: Ongelmain oli tosin toisin päin, kuin viestissäni (vahingossa)kirjoitin. Minun piti asettaa Uint8-tyyppiseen osoittimeen char-tyyppinen osoitin, eli tyyppimuunnos ei pelittänyt tässä tapauksessa.
No eikö muka toimi kun vaihtaa muuttujatyyppien paikat Metabolixin mallissa? Siis näin:
char * A; Uint8 * B; B = (Uint8*)A;
Aihe on jo aika vanha, joten et voi enää vastata siihen.