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 :

Sous-programmes variables pointeurs et adresse


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 26
    Points
    26
    Par défaut Sous-programmes variables pointeurs et adresse
    Bonjour,
    Je me posais la question:
    si j'ai un sous-programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void je_sais_pas_quoi_mettre (unsigned int* pointeur, unsigned char zero_imagination);
    Puis-je l'utiliser comme ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je_sais_pas_quoi_mettre(&varA, varB);
    est-ce que ça va marcher et créer implicitement un pointeur qui pointe à l'adresse de varA?

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    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 195
    Points : 17 163
    Points
    17 163
    Par défaut
    bonjour.
    "pointeur", c'est le nom qu'on donne au type qui contient une adresse.
    Une variable de type pointeur d'entier contient l'adresse d'un entier.

    L'opérateur & servant à prendre l'adresse d'une variable, si var1 est un unsigned int, alors &var1 est une expression du type unsigned int *.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta réponse.
    Donc si je comprends bien, il vaudrai mieux que je declare comme ceci mon sous programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void SP1 (unsigned int ptr_A, unsigned char B);
    //utilization
    SP1(&varA,varB)
    et tout au long de mon sous programme j'utilise la variable
    et ainsi je pourrais modifier varA (qui se trouve dans mon programme principal) depuis mon sous programme SP1.

  4. #4
    Membre éprouvé
    Avatar de Garvelienn
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2016
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Septembre 2016
    Messages : 244
    Points : 993
    Points
    993
    Par défaut
    Non. Ton premier code était bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void je_sais_pas_quoi_mettre (unsigned int* pointeur, unsigned char zero_imagination);
    En effet, &varA va créer implicitement un pointeur si on vulgarise.

    Ainsi, dans ta fonction si tu appelles *pointeur = 10; alors ta variable varA aura 10 comme valeur à la sortie de la fonction.

    C'est ce qu'on appelle le passage par variable/référence (soit avec des pointeurs C/C++ soit avec des références C++)

    Je t'invite à lire ce tutoriel à propos : http://cpp.developpez.com/cours/cpp/...page_6#LVI-F-4

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    J'ai tout compris! Merci pour ta réponse. Je vais jeté un oeil à ta reference, merci pour tout

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par neophyte_ingé Voir le message
    et ainsi je pourrais modifier varA (qui se trouve dans mon programme principal) depuis mon sous programme SP1.
    Bonjour
    C'est exactement comme ça que fonctionne "scanf()" et autres fonctions de "remplissage". On leur passe au minimum l'adresse du truc à remplir (et souvent d'autres infos comme la taille du truc à remplir)...

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

Discussions similaires

  1. Problème de passage par adresse dans un sous-programme
    Par Maskeren dans le forum Débuter
    Réponses: 11
    Dernier message: 17/05/2015, 18h11
  2. Réponses: 3
    Dernier message: 22/07/2008, 10h46
  3. Réponses: 5
    Dernier message: 07/11/2007, 15h14
  4. Réponses: 2
    Dernier message: 04/06/2004, 10h36
  5. [langage] les sous programmes
    Par giverny dans le forum Langage
    Réponses: 6
    Dernier message: 21/07/2003, 19h24

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