Partage
  • Partager sur Facebook
  • Partager sur Twitter

A Quoi sert la fonction "VOID"

Sujet résolu
17 mars 2006 à 22:34:35

J'en suis pas encore arrivé là mais je vois tout le monde
utiliser "Void" dans son code source,c'est quoi, j'aimerai bien savoir.
  • Partager sur Facebook
  • Partager sur Twitter
17 mars 2006 à 22:44:49

C'est une fonction qui ne retourne aucune valeur.
  • Partager sur Facebook
  • Partager sur Twitter
17 mars 2006 à 23:02:40

Citation : Pacino.

J'en suis pas encore arrivé là mais je vois tout le monde
utiliser "Void" dans son code source,c'est quoi, j'aimerai bien savoir.


C'est 'void'.
Le C est sensible à la casse.

void signifie 'vide' en anglais. En fait il peut s'agir d'un type comme char, int, double etc. mais il est un peu particulier en ce sens que c'est un type incomplet, c'est à dire dont on ne connait pas la taille. Par conséquend, il n'est pas possible de créer un instance de ce type :
   void x;

est une erreur (ne compile pas).

Par contre, il est possible de définir un pointeur de ce type :
   void *p;

qui ne permet qu'une chose : stocker l'adresse de n'importe quel objet (ou variable, c'est pareil).

   int a;
   char b[10];
   double c;
   void *p;

   p = &a;
   p = b; /* adresse de b[0] */
   p = &c;

C'est ce qu'on appelle un pointeur générique ou anonyme ou non-typé. On ne sait pas déréférencer un tel pointeur[1] :

   int a = 123;
   void *p = &a;
   int x = *p; /* ne compile pas en mode standard */

C'est par exemple le type retourné par malloc(),
void *malloc (size_t size);

ce qui permet de stocker l'adresse d'un bloc alloué dans le pointeur du type correspondant.
char *s = malloc(10);


L'autre utilisation de void signifie 'vide' dans le sens de 'absence de'. On peut signifier qu'un fonction n'a pas de paramètres :
T f (void)

ou qu'elle de retourne rien:
void f (T param)

ou les deux:
void f (void)



-------------------------------------------
[1]
Mais une extension de gcc considère void * comme char * et permet donc le déréférencement, donc attention aux conclusions trop hatives...
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
18 mars 2006 à 10:39:23

-ed- ==> Le pauvre Pacino ; qui n'est pas encore là , il doit être un peu noyé avec ce que tu lui a expliqué, non ? :p
  • Partager sur Facebook
  • Partager sur Twitter
18 mars 2006 à 15:12:36

Citation : PianoPâriss

-ed- ==> Le pauvre Pacino ; qui n'est pas encore là , il doit être un peu noyé avec ce que tu lui a expliqué, non ? :p


Je ne connais pas son niveau, et il y a d'autres lecteurs... Et si il ne comprends pas, il va poser des questions, ou il le comprendra plus tard...
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
18 mars 2006 à 19:02:06

-ed- ==> Oauis , je rigolais :-°

A++ ^^
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
19 mars 2006 à 10:42:54

Heu à propos du type void, quand je tape sizeof(void) ça renvoit 1 o_O C'est normal docteur?
  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2006 à 11:07:39

Ben oui, faut bien que ce soit codé sur au moins un octet. Sinon tu le met où ton pointeur de type void ?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
19 mars 2006 à 11:16:47

Ha oui pas bête ^^
  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2006 à 11:26:15

Il faut quand même garder le void en mémoire mais comme c'est vide ca prend presque rien :lol:
  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2006 à 12:10:49

Citation : Ze moi

Heu à propos du type void, quand je tape sizeof(void) ça renvoit 1 o_O C'est normal docteur?


Il faut lire les messages en entier...

Citation : -ed-


Mais une extension de gcc considère void * comme char * et permet donc le déréférencement, donc attention aux conclusions trop hatives...



avec l'option -ansi (qui désactive les extensions de gcc) :

Compiling: main.c
main.c: In function `main_':
main.c:11: warning: invalid application of `sizeof' to a void type
Linking console executable: C:\dev\forums\OP\01.exe
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 1 warnings
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
Anonyme
19 mars 2006 à 12:12:51

Ha c'est donc les pointeurs vers void qui font 1 octet! pas les void tout cours!
  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2006 à 12:15:55

Citation : mleg

Ben oui, faut bien que ce soit codé sur au moins un octet. Sinon tu le met où ton pointeur de type void ?


Rien à voir. Mauvaise réponse.
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
19 mars 2006 à 12:19:58

Okay je m'incline sur ce coup. M'enfin qui ne tente rien n'a rien hein ;) .

Merci pour la précision.
  • Partager sur Facebook
  • Partager sur Twitter
21 septembre 2018 à 17:57:09

Salut ! Si le void est en forme de fonction ( Void setUp() ), est ce qu'il a un rôle différent ? Merci :)
  • Partager sur Facebook
  • Partager sur Twitter
21 septembre 2018 à 18:53:37

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet.

  • Partager sur Facebook
  • Partager sur Twitter