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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    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 Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    868
    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 : 868
    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
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 491
    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 averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    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