| |||||
| Bas de page | |
|---|---|
| Auteur | Sujet : void |
Publicité | Posté le 26-04-2007 à 16:04:43 ![]() ![]() |
Elmoricq Modérateur | Non, on ne peut pas faire d'opération sur le contenu d'une adresse pointée par un void*, c'est un pointeur générique. Si tu veux pouvoir en faire quelque chose (du contenu de l'adresse blabla), il faut au minimum un second paramètre, pour donner la taille unitaire d'un élément. Et si ton void* est un tableau d'éléments, il te faut aussi donner à la fonction le nombre d'éléments... Message édité par Elmoricq le 26-04-2007 à 16:09:06 |
_darkalt3_ Proctopathe |
Elmoricq Modérateur |
Euh, aucun problème :
Message édité par Elmoricq le 26-04-2007 à 16:12:10 |
_darkalt3_ Proctopathe | (donc la réponse à sa question aurait été "oui c'est possible techniquement", avant développements). --------------- Töp of the plöp |
Elmoricq Modérateur |
Message édité par Elmoricq le 26-04-2007 à 16:17:19 |
_darkalt3_ Proctopathe | (oui bien sûr, mais je pars du principe que le gars comprends mieux en manipulant lui même) --------------- Töp of the plöp |
matafan | C'est tout à fait possible, mais tu ne sera pas capable de déréférencer toto. Pour accéder à ce qui est pointé par toto, il faudra le caster avant de le déréfencer, ce suppose que tu connais pas ailleurs le type pointé par toto.
|
Elmoricq Modérateur | Par contre les cas sont rares où l'ont peut écrire une fonction admettant un void* comme argument, et "connaissant" le type du paramètre (on peut par exemple imaginer une structure avec un void* dedans, et un champ de la structure permettant de déduire le type du void* selon les cas). Message cité 1 fois Message édité par Elmoricq le 26-04-2007 à 17:15:04 |
Joel F Real men use unique_ptr |
|
Publicité | Posté le 26-04-2007 à 18:04:44 ![]() ![]() |
moi23372 | les void* sont souvent utiliser comme pointeur vers des fonctions. Sinon c'est vrai que je n'en vois pas l'interet non plus. |
Elmoricq Modérateur |
Surement pas ! Un pointeur de fonction, c'est ça : <type>(*fonctionquelconque)(paramètres, ...) exemple : int *pointeurDeFonction(int machin, double bidule, const char * const * truc);
Y a plein d'intérêt au void*, on discutait juste ici de la possibilité d'exploiter les données à l'adresse pointée par un void*, avec juste ce pointeur à disposition.
Euh... non. Message cité 1 fois Message édité par Elmoricq le 26-04-2007 à 21:22:16 |
Sve@r |
Les deux structures étant différentes, je n'ai pas eu d'autre solution que de déclarer ma variable de type "void*". Ensuite, lorsque je voulais me servir de ce pointeur en tant que "struct passwd*", je faisais un cast. Idem pour l'autre.
Message cité 1 fois Message édité par Sve@r le 28-04-2007 à 13:50:11 --------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
Elmoricq Modérateur |
|
Sve@r |
--------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
Emmanuel Delahaye C is a sharp tool |
Quand à l'utilité, elle concerne évidemment la programmation générique. Par exemple : http://mapage.noos.fr/emdel/complog.htm ou http://mapage.noos.fr/emdel/clib.htm Message édité par Emmanuel Delahaye le 29-04-2007 à 15:40:42 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Sve@r |
--------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Sve@r |
Message cité 1 fois Message édité par Sve@r le 29-04-2007 à 18:56:33 --------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Sve@r |
--------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Sve@r |
Message cité 2 fois Message édité par Sve@r le 29-04-2007 à 23:16:40 --------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
schnapsmann Zaford Beeblefect |
Message édité par schnapsmann le 29-04-2007 à 22:59:11 |
Emmanuel Delahaye C is a sharp tool |
Ben c'est normal. Le prototype et la fonction doivent être identiques. Sinon, c'est le b*rd*l Message édité par Emmanuel Delahaye le 29-04-2007 à 23:50:15 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
in_your_phion | bonjour,
|
Emmanuel Delahaye C is a sharp tool |
On peut aussi laisser les arguments un par un, surtout si il n'y a pas de pointeurs, mais ça multiplie les copies... Et si il y a 30 paramètres, ça va être facile à gérer. Bref, c'est un peu au cas par cas. Que veux-tu faire exactement ? Message cité 1 fois Message édité par Emmanuel Delahaye le 09-05-2007 à 17:57:40 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
in_your_phion |
|
matafan | Je serais tenté de dire qu'il faudrait architecturer ton appli différemment de manière à ce que ta fonction prennent toujours des arguments du même type (l'utilisation d'un enum + struct entre dans ce cas de figure). Si ce n'est pas possible, je vois deux solutions :
Message cité 1 fois Message édité par matafan le 10-05-2007 à 13:26:16 |
Emmanuel Delahaye C is a sharp tool |
Message édité par Emmanuel Delahaye le 10-05-2007 à 14:27:55 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
matafan |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
in_your_phion | que pensez vous de l'exemple suivant, qui utilise un void ? C'est ce à quoi je pensais ... C'est un bout de code d'exmple d'une librairie mathématique (gsl). Dans l'exemple, on initialise une fonction avec une liste de paramètres pointé par un void *. Y'a des cast un peu partouts, et je ne comprend pas bien l'interêt....Pourriez vous m'éclairer ? le lien http://www.gnu.org/software/gsl/ma [...] o-minimize l'exemple :
Message cité 1 fois Message édité par in_your_phion le 11-05-2007 à 16:25:20 |
Sve@r |
Message cité 1 fois Message édité par Sve@r le 11-05-2007 à 18:25:50 --------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
Emmanuel Delahaye C is a sharp tool |
Message cité 1 fois Message édité par Emmanuel Delahaye le 11-05-2007 à 18:39:07 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Sve@r |
--------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
Publicité | Posté le ![]() ![]() |
| Sujets relatifs | |
|---|---|
| Execution d'un void main(args[]) en java et valeur retour | [C] -pedantic et affectation entre pointeur de fonction et "void *" |
| de char** à void** | probleme pointeur void alors qu'un cast de char* marche :\ |
| [C] Caster un int en void* | [C] cast d'un void* |
| Int et Void cest koi la diference | [c] : void value not ignored as it ought to be : help |
| Void Main(int argc) comment gerér les arguments? | [resolu] KESAKO??? void *toto; |
| Plus de sujets relatifs à : void | |






