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 :

Alias sur une adresse


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
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut Alias sur une adresse
    Bonjour.

    Je me demandais comment faire dans le cas abstrait (je ne veux rien faire de particulier, je me posais la question telle quelle) suivant :

    J'ai un entier n qui correspond numériquement à une adresse.
    Je veux mettre un alias sur cette adresse.

    Genre la mémoire :
    Adresse Valeur
    0 45
    1 14225
    2 5
    Je veux créer un alias sur l'adresse 1. Définir &a comme 1 donc a comme 14255.



    J'ai essayé en faisant comme avec les pointeurs, vu que ça marche avec les pointeurs cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i = 5;
    int n = (int)&i; // n prend l'adresse de i en changeant le type de &i en int
    int* p = (int*)n; // change le type de n pour l'assigner à p

    En faisant avec les alias :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i = 5;
    int n = (int)&i; // n prend l'adresse de i en changeant le type de &i en int
    int& a = (int&)n; // change le type de n pour l'assigner à a
    Mais ça ne marche visiblement pas.

    Je me demande donc comment faire, merci beaucoup de me répondre, bonne journée .

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    Je suis pas vraiment sur de comprendre la question, qu'est ce que tu entend par alias ?
    Avoir plusieurs pointeurs sur la même adresse ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int i = 5;
    int *n1 = &i;
    int *n2 = n1;
     
    i = 6;
    assert(*n1 == 6);
    assert(*n2 == 6);
     
    *n1 = 7;
    assert(i == 7);
    assert(*n2 == 7);
    Ou donner un identifiant à une adresse ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int i = 5;
    std::map<int, int*> mapAddr;
    mapAddr.insert(std::make_pair(0, &i)); // on assigne l'id 0 à l'adresse de i
     
    i = 6;
    assert(*mapAddr[0] == 6);

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Non, ça n'est pas mettre deux pointeurs sur la même adresse.
    C'est, je suppose ce que fait votre code ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int i = 5;
    std::map<int, int*> mapAddr;
    mapAddr.insert(std::make_pair(0, &i)); // on assigne l'id 0 à l'adresse de i
     
    i = 6;
    assert(*mapAddr[0] == 6);
    Je ne sais pas si c'est ça, je suis entrain de regarder les objets que vous utilisez, mais je précise ma question au cas où :

    Je voudrais créer une variable a qui a l'adresse que j'ai choisie pour elle.
    D'où mon tableau dans le premier message :
    Adresse Contenu
    0x22ff3 23
    0x22ff8 12
    Je veux créer a telle que &a=0x22ff8 et donc a=12.

    J'étudie mieux votre code, peut-être fait-il cela mais je ne connais pas vos objets =).

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Ca correspond quasiment à la référence.
    Il faut cependant oublier la notion d'adresse explicite. C'est quasiment impossible à manipuler correctement.

    Ca s'écrit ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i= 12;
    int& ref = i;
    Tout se passera comme si ref est i.

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    leternel : Je sais comment déclarer un alias sur une variable, je ne sais pas si vous avez bien lu ma question ^^.

    Les données du problème :
    j'ai une adresse de variable dans un int n. (je n'ai pas la variable, juste son adresse dans un int)

    L'objectif du problème :
    Créer une variable qui a comme adresse le contenu de n.

    Merci beaucoup =)

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int n = 3;
    int* p = (int*)NULL + n;
    non ?

    Sinon j'ai absolument rien compris au charabia initial
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. tous les sites hébergés sur une adresse IP
    Par ver_for dans le forum Serveurs (Apache, IIS,...)
    Réponses: 4
    Dernier message: 21/07/2008, 10h30
  2. Réponses: 1
    Dernier message: 30/04/2008, 16h25
  3. Faire un test sur une adresse IP
    Par 01211983 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 24/07/2007, 14h11
  4. Réponses: 8
    Dernier message: 23/06/2007, 10h38
  5. Quel langage pour envoyer un fichier sur une adresse
    Par dai.kaioh dans le forum Développement
    Réponses: 2
    Dernier message: 02/04/2004, 16h38

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