Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: char* -> Uint8*

Gaxx [03.05.2005 17:10:07]

#

Kuinka saan "sijoitettua" char-osoittimeen vaikkapa Uint8-tyyppisen osoittimen?

Metabolix [03.05.2005 18:07:06]

#

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 *));

Gaxx [03.05.2005 18:17:47]

#

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.

ville-v [09.05.2005 16:41:06]

#

No eikö muka toimi kun vaihtaa muuttujatyyppien paikat Metabolixin mallissa? Siis näin:

char * A;
Uint8 * B;
B = (Uint8*)A;

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta