IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Correction type void


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Par défaut Correction type void
    Bonjour,

    je suis entrain de lire un cours en C est je suis arrivé a un chapitre sur le type void (ci-dessous un extrait du cours).

    10.3. Le type void

    Le type void se comporte comme un type fondamental.

    ♦ Il sert à préciser qu'une fonction ne renvoie aucune valeur (procédure).

    ♦ Il peut être utilisé comme type de base pour des pointeurs sur des objets de type

    inconnu (pointeur universel ☺ ).

    void f();

    void * pv;

    Cette facilité doit être utilisée pour se servir des fonctions génériques qui rendent des

    pointeurs vers n'importe quel type d'objets (exemple : fonction malloc).

    Exemple :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /* declaration des prototypes */
    void * malloc(unsigned taille);
    void free(void *);
     
    void une_fonction() {
     
    /* declaration des variables pointeur pi et pc. pi pointe un int et pc pointe un char
    int *pi;
    char *pc;
     
    /* pi pointe un int a qui on a alloué 20 octets ? */
    pi = (int *) malloc(10*sizeof(int));
    /* pc pointe un char a qui on a alloué 10 octets ? */
    pc = (char *) malloc(10*sizeof(char));
    ...
    /* on libère la mémoire allouée */
    free(pi);
    free(pc);
    }

    Donc j'ai quelques questions par rapport au code ci-dessus J'ai mis des commentaires svp pouvez vous valider ou m'expliquer si mes commentaires son faux.

    Merci.

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    En fait, pi pointe sur un int, dont l'adresse est celle d'un bloc de mémoire (alloué via malloc, donc sur le tas (heap)), de la taille de 10 ints.
    Concrètement, le bloc mémoire correspond à ce que serait un tableau de type int[10].
    L'utilisateur de pi a intérêt à savoir qu'il y a 20 10 éléments.

    Comme la taille d'un int n'est pas spécifiée dans la norme, elle peut varier d'une combinaison OS/matériel/compilateur à l'autre.
    la taille du bloc n'est pas vraiment contrainte, mais à de bonnes chances d'être 40 octets (c'est à dire des ints en 32bits).

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Par défaut
    Merci pour les précisions!

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par leternel Voir le message
    Concrètement, le bloc mémoire correspond à ce que serait un tableau de type int[20].
    L'utilisateur de pi a intérêt à savoir qu'il y a 20 éléments.
    Pourquoi 20 éléments ?

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    parce que je me suis embrouillé, je corrige mon message.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question sur le type "void *"
    Par ChriGoLioNaDor dans le forum C++
    Réponses: 4
    Dernier message: 10/02/2006, 11h27
  2. invalid static_cast from type `void
    Par barbarello dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 04/01/2006, 12h04
  3. Type void
    Par rod59 dans le forum C
    Réponses: 5
    Dernier message: 19/11/2005, 16h01
  4. Type void * ... petite question !
    Par Franck.H dans le forum C
    Réponses: 29
    Dernier message: 28/03/2005, 13h38
  5. type void* dans une structure
    Par barbapapaz dans le forum C
    Réponses: 3
    Dernier message: 16/07/2004, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo