2692Fermer2694
FarewellLe 22/11/2011 à 18:12
bearbecue (./2690) :
si tu as un pointeur qui est cense pointer vers une zone de donnees/octets brute, dans ce cas, t'utilise pas un void*, mais genre un unsigned char *, ou un unsigned __int8 *. un void *, ca pointe vers un endroit abstrait

Je vois pas en quoi un pointeur vers des "données quelconques" devrait plus être un char* qu'un void*, au contraire, cf la suite
bearbecue (./2690) :
la tu dois de toutes facons quand meme faire un cast explicite pour lire/ecrire dedans, donc je vois franchement pas a quoi ca sert

Et c'est justement ça qui est bien : t'es obligé de dire ce que tu vas lire ou écrire via ton void*, tu risques donc pas de faire les erreurs que tu ferais avec un char*.
Un void* est un type incomplet, donc il est normal de le compléter à l'utilisation, et il doit être utilisé pour ce pour quoi il est fait : la désignation d'un lieu où se trove on ne sait pas quoi, contrairement aux autres pointeurs dont le type indique ce qu'il y a au bout.

Et encore une fois, un char* pointe vers un char, pas vers "je sais pas trop quoi", sinon char* ne veut plus rien dire.

Enfin c'est mon avis, je ne suis pas informaticien, on pourra toujours me dire "pour qui tu te prends t'y connait rien", et c'est vrai. Mais je n'arrive pas à comprendre ce qui vous fait coincer.