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 :

Comment récupérer l'adresse de la variable pointeur en paramètre de fonction ?


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 27
    Points : 46
    Points
    46
    Par défaut Comment récupérer l'adresse de la variable pointeur en paramètre de fonction ?
    Bonjour à tous,

    Je ne vois pas comment faire avec la fonction stackDisplay pour afficher l'adresse de stockage du pointeur appelant.

    Un petit code.

    Code : 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
    20
    21
    22
    23
    24
     
    #include <stdio.h>
    #include <stdlib.h>
     
    void stackDisplay(int *);
     
    int main()
    {
        int *p = malloc( sizeof *p);
        if ( p == NULL) exit(1);
        *p = 4;
        printf("Address %p Value %p\n", &p, p);
        printf("Address %p Value %d\n", p, *p);
        stackDisplay(p);
        free(p);
        return 0;
    }
     
    void stackDisplay(int *_p)
    {
        printf("Pointer : \n");
        printf("Address %p Value %p\n", &_p , _p);
        printf("Address %p Value %d\n\n", _p , *_p);
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Tu ne peux, sauf en passant cette adresse à la fonction :
    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
    20
    21
    22
    #include <stdio.h>
    #include <stdlib.h>
     
    void stackDisplay(int **pp)
    {
    	printf("Pointer : \n");
    	printf("Address %p Value %p\n", pp , *pp);
    	printf("Address %p Value %d\n\n", *pp , **pp);
    }
     
    int main(void)
    {
    	int *p = malloc( sizeof *p);
    	if ( p == NULL)
    		return EXIT_FAILURE;
    	*p = 4;
    	printf("Address %p Value %p\n", &p, p);
    	printf("Address %p Value %d\n", p, *p);
    	stackDisplay(&p);
    	free(p);
    	return 0;
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 27
    Points : 46
    Points
    46
    Par défaut
    Ok Merci.

    Address 0xbff83910 Value 0x804a008
    Address 0x804a008 Value 4
    Pointer :
    Address 0xbff83910 Value 0x804a008
    Address 0x804a008 Value 4
    Une petite précision, le pointeur de pointeur n'est pas alloué car c'est un passage par adresse , c'est ça ?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    En effet. On fait pointer le pointeur en question sur une variable existante, plutôt que sur le tas.

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 19/01/2011, 10h00
  2. Réponses: 1
    Dernier message: 21/11/2005, 12h07
  3. [HTTP] Comment récupérer l'adresse de base d'une URL ?
    Par eric30eric dans le forum Web & réseau
    Réponses: 2
    Dernier message: 02/10/2005, 17h28
  4. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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