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 :

question sur pointeur retourné par malloc()


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 51
    Par défaut question sur pointeur retourné par malloc()
    Salut,

    Je suis depuis qq jours sur les pointeurs et j'ai une quesiton :

    je lis d'un côté que malloc(nb_octets) retourne un pointeur qui pointe sur un espace mémoire de la taille de nb d'octets et d'un autre que malloc() retourne une adresse.

    Par ex : (j'enlève par souçi de clarté le test de retour NULL de malloc()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char p*;
    p=malloc(5*size(char);


    Quel est le résultat?

    1- p contient directement une adresse qui pointe sur le premier octet del'espace mémoire réservé ?

    ou alors :

    2- p contient l'adresse d'un pointeur qui lui pointe sur l'espace réservé ?

    merci.

  2. #2
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Tout d'abord, un pointeur est une adresse.
    Ensuite, p contient l'adresse du bloc de mémoire réservé, autrement dit un pointeur sur ce bloc.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 51
    Par défaut
    ben pour moi, si p contient une adresse c'est un pointeur.

    Par contre si p contient un pointeur, il contient l'adresse d'un pointeur.
    donc je ne sais pas ce que ça donne, est-ce comme ce shéma :

    var-------p---------pointeur renvoyé par malloc()------------espace réservé
    adr------500----------------600--------------------------------700-------
    cont.----600----------------700---------------------------------?--------

    ou comme celui-ci :

    var-------p--------------espace réservé----
    adr------500----------------600------------
    cont.----600-----------------?-------------

  4. #4
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Pardon, je me suis mal exprimé. Ce que je veux dire, c'est qu'après l'appel à malloc, p contient une adresse (celle du bloc mémoire réservé), c'est à dire que p pointe vers ce bloc. J'aurais dû écrire "autrement dit, p est un pointeur sur ce bloc".
    Je ne comprends pas vos schémas, désolé.

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Un pointeur est une variable (donc associee a une adresse) dont la valeur est l'adresse d'une autre variable (explicitement nommee ou anonyme, comme le bloc renvoye par malloc).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 51
    Par défaut
    d'accord, je comprends.


    Désolé pour les shéma....ad c'est adresse, var c'est le nom de la variable et cont le contenu, mais ils ne sont surement pas clair.

    Mais c'est clair à présent, ce serait donc le deuxième schéma.
    P contient directement l'adresse du bloc réservé.

    merci beaucoup.

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par stephl
    Tout d'abord, un pointeur est une adresse.
    un pointeur constant est une adresse
    un pointeur est une variable dont la valeur est une adresse
    Ensuite, p contient l'adresse du bloc de mémoire réservé, autrement dit un pointeur sur ce bloc.
    p est un pointeur sur ce bloc. Si le bloc est un tableau, p contient l'adresse du premier élément de ce tableau.

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gauguin
    ben pour moi, si p contient une adresse c'est un pointeur.
    Exact.

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gauguin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char p*;
    p=malloc(5*size(char);
    Quel est le résultat?

    1- p contient directement une adresse qui pointe sur le premier octet de l'espace mémoire réservé ?
    Oui.
    2- p contient l'adresse d'un pointeur qui lui pointe sur l'espace réservé ?
    Non.

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

Discussions similaires

  1. [XL-2000] Question sur des histogrammes par vba excel
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2013, 13h13
  2. Réponses: 9
    Dernier message: 22/02/2010, 13h49
  3. Question sur le passage par référence
    Par Baubeau Cédric dans le forum Débuter
    Réponses: 2
    Dernier message: 28/01/2010, 10h14
  4. Réponses: 1
    Dernier message: 22/04/2008, 18h18
  5. [JFileChooser] Une petite question sur les chemins par defaut
    Par MDP dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 06/02/2008, 14h49

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