bonjour à tous,
voila mon problème, ou plutôt ma question, est ce que si on prend un pointeur qui pointe vers une structure, on peut la lire comme une chaine de charactères ? Je m'explique :
Par exemple j'ai la structure suivante :
Code :
- struct Obj {
- public:
- int a;
- char b[3];
- float c;
- };
|
Est ce que je peux considérer un pointeur de char* dessus, et espérer retrouver les valeurs des champs ? cad :
Code :
- // 13 3.14f
- // --------------- 'T' 'H' 'C' ---------------
- // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
- int main() {
- Obj o;
- //initialisation des champs avec des valeurs
- o.a = 13;
- memcpy(o.b,"THC",sizeof(char)*3);
- o.c = 3.14f;
- char * p = (char*)&o; //ici un pointeur vers mon objet (avec un cast crado)
- //et là, j'essaie de retrouver les valeurs à partir du pointeur :
- printf("%d\t%c%c%c\n",
- *(int*)p,
- *(char*)(p+4),*(char*)(p+5),*(char*)(p+6));
- p+=8;
- printf("%f\n",*(float*)p);
- std::cin.get();
- return 0;
- }
|
mais, ce que je ne comprend pas, c'est pourquoi pour retrouver ma valeur de float o.c = 3.14f, je suis obligé d'aller à la case huit! pourquoi ce n'est pas la case 7 plutot ? comme sur mon schéma en commentaires...
Si vous avez compris et savez pourquoi, merci!!
Message édité par in_your_phion le 20-07-2010 à 21:43:00