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 :

Addition d'adresses mémoire.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut Addition d'adresses mémoire.
    Bonjour,

    je cherche en C à additionner des adresses mémoires à partir d'une adresse initiale.

    Le problème est que j'obtiens des résultats complètement farfelues comme par exemple :
    342802128
    342802120
    342802112
    342802104
    342802196

    alors qu'une seule unité est incrémentée à chaque fois.

    Je penses que c'est une erreur de débutant, mais pouvez-vous me dire pourquoi ?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Faudrait préciser ta question, c'est pas clair du tout.

    Si tu as un pointeur sur un type et que tu l'incrémentes de 1, sa valeur va augmenter en réalité de sizeof(type) bytes.
    Exemple : si tu as un pointeur sur int et que sa valeur est (au pif) 0x12345678, et que tu incrémentes de 1 ce pointeur, sa valeur sera augmentée de 4 (car généralement, int fait 4 bytes) ; il aura donc pour valeur 0x1234567C et non 0x12345679.
    Si c'est un pointeur sur double, l'incrémentation augmentera sa valeur de 8. Pour un pointeur sur char, ce sera 1.
    Même chose concernant un pointeur sur structure, qu'on incrémenterait, cela dépend de la taille de la structure.
    etc...
    Tu auras plus d'infos en cherchant du côté de l'arithmétique des pointeurs.

    Je ne sais pas si ça répond à ta question...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut
    Ta réponse me convient car il s'agit d'un pointeur sur une chaine de caractère.

    Ce que je ne comprend pas, c'est quel type utiliser pour afficher un caractère a partir d'un pointeur ? Il me parraitrait logique d'utiliser %c comme ceci :

    printf("caractère %c trouvé\n", *atrouver[1]);
    Seulement cela ne fonctionne pas...

    Une explication ? Je me trompe de logique ?

  4. #4
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Citation Envoyé par clem85 Voir le message
    Ta réponse me convient car il s'agit d'un pointeur sur une chaine de caractère.

    Ce que je ne comprend pas, c'est quel type utiliser pour afficher un caractère a partir d'un pointeur ? Il me parraitrait logique d'utiliser %c comme ceci :



    Seulement cela ne fonctionne pas...

    Une explication ? Je me trompe de logique ?
    Si tu as une chaine de caractère définie par :

    Pour afficher un caractère de la chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("caractère %c trouvé\n", tableau[1]);

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut
    Dans mon cas, je me trouve dans une fonction définie comme cela:
    int verifmot(char *atrouver[], int *addrdebut)
    Je viens de trouver mon erreur, je passe en paramètre l'adresse de mon tableau de chaine de caractère. Je retrouve ce que je veut en définissant ma fonction comme ceci :
    int verifmot(char *atrouver, int *addrdebut)
    Merci pour votre aide et vos éclaircisssements

    @+

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Que veux-tu dire par "additionner des adresses mémoire" ?

    On n'additionne pas deux adresses: On ne peut qu'additionner une adresse et un décalage.

    ...Ou on peut additionner des entiers pointés par les adresses en question...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Adresse mémoire partagée
    Par dave.vuistiner dans le forum Assembleur
    Réponses: 4
    Dernier message: 10/08/2006, 19h45
  2. Réponses: 16
    Dernier message: 30/05/2006, 18h46
  3. lire la valeur d'une adresse mémoire
    Par ilimo dans le forum Windows
    Réponses: 17
    Dernier message: 11/04/2006, 15h21
  4. PRoblème d'adresse mémoire
    Par pmboutteau dans le forum Access
    Réponses: 11
    Dernier message: 07/04/2006, 11h00
  5. Réponses: 6
    Dernier message: 19/09/2005, 19h48

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