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 :

Stocker l'adresse pointée par un pointeur


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Stocker l'adresse pointée par un pointeur
    Bonjour,

    J'ai une fonction qui reçoit un pointeur comme argument. Cette fonction doit premièrement "extraire" l'adresse à laquelle le pointeur (argument) pointe. Puis, elle doit stocker cette adresse en mémoire à X octets de celle-ci.

    Comment puis-je m'y prendre?

    Merci en avance pour votre temps.

  2. #2
    Membre chevronné
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 853
    Points : 2 167
    Points
    2 167
    Par défaut
    Là pour le coup je comprends pas des masses ce que tu veux... A la limite tu fais pointeur1 = pointeur2 pour avoir l'adresse et pointeur2 aura été créé plus tard donc sera à X octets de pointeur1.

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Cette fonction doit premièrement "extraire" l'adresse à laquelle le pointeur (argument) pointe.
    Quand on commence à travailler sur ce genre de problèmes, il est important d'être précis dans le nommage. Un pointeur contient une adresse et cette adresse te permet d'accéder à un élément. On dit donc qu'un pointeur pointe vers un élément. Ici, tu n'as donc rien à extraire, c'est la valeur du pointeur lui-même que tu cherches.

    Puis, elle doit stocker cette adresse en mémoire à X octets de celle-ci.
    Peux-tu nous donner le prototype de ta fonction stp ? En fonction du type de pointeur, la réponse pourrait différer.

    Globalement, tu devrais avoir quelque chose dans le genre :
    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
    #include <stdlib.h>
    #include <stdint.h>
    #include <stdio.h>
     
    int main(void)
    {
        int offset = 16;
     
        // ne pas oublier que la memoire doit etre allouee pour ne pas risquer une erreur de segmentation
        char *debut = malloc(offset * sizeof(char) + sizeof(intptr_t));
     
        // pour du visuel
        *debut = 'd';
     
        // affectation
        *(intptr_t*)(debut + offset) = (intptr_t) debut;
     
        // pour voir que c'est bon (a noter que %p affiche une adresse en base hexadecimal)
        printf("@ %p : %c   |   @ %p : %x", debut, *debut, (debut + offset), *(intptr_t*)(debut + offset));
    }
    Le type intptr_t est un type entier capable de stocker la valeur d'un pointeur de manière portable. Google te donnera des détails sur ce type et si besoin, on pourra t'en dire plus

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Merci Bktero! C'est exactement ce que je cherchais à faire

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

Discussions similaires

  1. [Batch] Script .bat : changer l'adresse pointée par un dossier
    Par Sha0r4n dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 16/05/2013, 20h04
  2. [MySQL] système de points par adresse IP
    Par tacticgreg dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/04/2009, 17h38
  3. Réponses: 3
    Dernier message: 29/07/2008, 09h56
  4. Taille de la mémoire pointée par un pointeur
    Par Tex-Twil dans le forum C
    Réponses: 9
    Dernier message: 09/10/2006, 14h27
  5. Réponses: 3
    Dernier message: 17/03/2006, 14h50

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