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 :

Questions théoriques en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Par défaut Questions théoriques en C++
    Bonjour, j'espère que vous pourrez m'éclairer en répondant à ma question . Pendant les vacances, je dois réaliser la correction d'un devoir en C++ mais je bloque sur une question ou je ne comprend pas certaines subtilités :

    Expliquer la ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define RDR (*(unsigned char*)0x8000)
    => définition d'une variable contenant l'adresse d'une pointeur pointant sur une adresse spécifique ??

    Expliquer :
    => déclaration d'un pointeur de type char non signé.

    Expliquer:
    => je ne vois malheureusement pas la différence avec la ligne précédente

    Expliquer :
    => contenu de l'adresse d'un pointeur de type char non signé ??

    En espérant avoir été clair et dites moi si je me suis trompé l'a ou j'ai "réussi" a compléter

    Merci d'avance pour votre aide

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Attention, #define ne définit pas une variable mais une macro : toutes les occurrences de RDR dans ton fichier vont être remplacées automatiquement par (*(unsigned char*)0x8000). Cette "expression" peut se traduire par « Le unsigned char situé à l'adresse mémoire 0x8000 ». D'habitude on n'intègre jamais "en dur" une adresse mémoire dans un code C++, mais si on connait très bien le matériel ça peut se justifier.

  3. #3
    Membre confirmé

    Homme Profil pro
    automatisme
    Inscrit en
    Octobre 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : automatisme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 59
    Par défaut
    Salut,
    je suis sur à 100% mais effectivement c'est la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char* = (unsigned char*)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    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 152
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par balhrog Voir le message
    Salut,
    je suis sur à 100% mais effectivement c'est la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char* = (unsigned char*)
    Oui puisque les parenthèses servent juste à forcer la précédence.
    Enfin en l'occurence, à rien.
    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.

  5. #5
    Membre actif
    Avatar de fmdao
    Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 90
    Par défaut
    C'est pas plutôt une conversion de type (cast) !

    entier vers pointeur ( adresse ).

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Oui puisque les parenthèses servent juste à forcer la précédence.
    Enfin en l'occurence, à rien.
    Donc je peux écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      unsigned char *s1;
      (unsigned char*) s2;
    Et ces deux lignes ont le même comportement ?

    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    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
    pas du tout (et je me suis déjà fait taper sur les doigts a ce sujet).

    unsigned char *s1; est la déclaration d'un pointeur sur unsigned char nommé s1
    (unsigned char*) s2; est une expression transtypant s2 en pointeur sur unsigned char. c'est l'équivalent de (int)2.0f;.

  8. #8
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Bonjour,

    Pour le define je ne sais plus si c'est une macro quand il y a une prise de paramètre et une définition quand il n'y en à pas.

    déclaration d'un pointeur de type char non signé, soit une variable de 1 octet (8 bits) avec des valeurs de 0 à 255

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (unsigned char*) s2;
    Un cast pour dire au programme que s2 est un pointeur de type unsigned char

    dé-référencement si je ne dit pas de connerie.

Discussions similaires

  1. Question théorique sur le langage
    Par Nico73 dans le forum Langage
    Réponses: 23
    Dernier message: 07/08/2006, 01h29
  2. question théorique sur le mot class
    Par stgi02 dans le forum C++
    Réponses: 3
    Dernier message: 01/05/2006, 15h11
  3. Question théorique sur les normales
    Par Pedro dans le forum DirectX
    Réponses: 5
    Dernier message: 16/10/2005, 19h24
  4. questions théoriques
    Par roger12 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/01/2005, 13h05
  5. Question théorique
    Par bart64 dans le forum Développement
    Réponses: 2
    Dernier message: 14/05/2003, 19h28

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