syntaxe en C
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

syntaxe en C



  1. #1
    cubitus_54

    syntaxe en C


    ------

    Bonsoir,

    Je décortique un programme arduino

    C'est quoi le rôle des * et des & sur les variables lors de l'appel ou dans la définition d'une fonction ?

    Code:
    uchar MFRC522_ToCard(uchar command, uchar *sendData, uchar sendLen, uchar *backData, uint *backLen)
    ou

    status = MFRC522_ToCard(PCD_TRANSCEIVE, TagType, 1, TagType, &backBits);
    Merci

    -----

  2. #2
    gienas
    Modérateur

    Re : syntaxe en C

    Bonsoir cubitus_54 et tout le groupe

    Citation Envoyé par cubitus_54 Voir le message
    B ... C'est quoi le rôle des * et des & sur les variables lors de l'appel ou dans la définition d'une fonction ?

    Code:
    uchar MFRC522_ToCard(uchar command, uchar *sendData, uchar sendLen, uchar *backData, uint *backLen)
    ...
    Le * collé au symbole de la variable désigne un pointeur sur cette variable.

    Le & indique que c'est l'adresse du symbole que désigne l'expression.

  3. #3
    cubitus_54

    Re : syntaxe en C

    Je dois être mauvais en C Je n'ai pas vraiment compris... ni l'un, ni l'autre.

    Si tu veux bien un peu expliquer

    Merci

  4. #4
    kevin8z

    Re : syntaxe en C

    Explication:

    Quand tu appel une fonction et que tu veut faire passer une valeur de variable tu doit lui envoyer l'adresse de celle ci pour qu'elle puisse la récupérer.
    Code:
    void exemple (unsigned char *receipt){
    *receipt = 2;
    }
    void main{
    char test;
    exemple (&test);
    while(1);
    }
    J'envoi à la fonction exemple l'adresse de la variable test, qui est récupérée dans le pointeur receipt. Ensuite je fait *receipt = 2 cela veut dire mettre la valeur 2 à l'adresse contenu dans le pointeur, donc en faite mettre 2 dans la variable test
    Je ne sais pas si j'ai été clair
    Dernière modification par gienas ; 27/03/2014 à 20h55. Motif: Ajouté les balises code, obligatoires pour les programmes

  5. A voir en vidéo sur Futura
  6. #5
    luc_1049

    Re : syntaxe en C

    Bonsoir

    Quand on passe une variable en paramètre de la procédure ou de la fonction en C, c'est une copie de la variable qui est utilisée et l'originale n'est pas modifié.

    Pour modifier une variable qui est passée en paramètre on récupère son adresse :
    procédure( char * ptr)
    => procédure récupère une adresse sur un caractère, donc à l'appel on lui passe une adresse soit par exemple &data.
    ensuite si on fait *ptr = 125 => data = 125, de même si on fait if (*ptr ==100) c'est que l'on teste si la variable data est égale à 100

    On peut aussi utiliser cela lorsque l'on passe en paramètre un tableau soit par :
    procédure( &tableau[0]) ou ce qui revient au même procédure( tableau). *(tableau +1) renvoi la deuxième valeur du tableau.

    Cela permet par exemple à une procédure de modifier plusieurs valeur passées en paramètres...

    On peut aussi aller plus loin avec des pointeurs de fonction pour faire des automates ou plus simple utiliser des pointeurs de structure...

    cdlt
    Dernière modification par luc_1049 ; 27/03/2014 à 20h37.

  7. #6
    cubitus_54

    Re : syntaxe en C

    Je pense que je commence à comprendre. (Je n'ai pas les idées bien claires ce soir... )

    Est ce que l'on pourrait le faire autrement en utilisant une variable déclarée dans le programme principal ?

  8. #7
    luc_1049

    Re : syntaxe en C

    Bonsoir

    Une variable globale oui. (il ne faut pas qu'elle soit statique...) Mais je vous incite à utiliser pour maîtriser cette notion de pointeur qui est fondamentale en C.
    De toute façon si vous ré-utilisez du code vous tomberez forcément dessus des pointeurs !
    Après il faudrait aborder la problématique de portabilité des variables.

    cdlt

  9. #8
    cubitus_54

    Re : syntaxe en C

    Mais je vous incite à utiliser pour maîtriser cette notion de pointeur qui est fondamentale en C.
    Oui je suis entièrement d'accord, pour le moment j’essaie de comprendre un programme pour mettre en œuvre un capteur RFID MFRC522 mal documenté (la doc donne tous les détails des registres, mais ne donne aucun exemple de mise en œuvre).

    Un grand merci à tous

Discussions similaires

  1. syntaxe C arduino
    Par cubitus_54 dans le forum Électronique
    Réponses: 8
    Dernier message: 25/03/2014, 18h28
  2. Syntaxe particulière en C
    Par Dlzlogic dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 13/03/2013, 14h40
  3. syntaxe inconnue !!
    Par invite8648123e dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 24/09/2012, 17h39
  4. Problème de syntaxe en C
    Par ahilali dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 26/06/2012, 12h13
  5. Syntaxe
    Par brunop dans le forum Chimie
    Réponses: 1
    Dernier message: 17/01/2006, 15h33
Découvrez nos comparatifs produits sur l'informatique et les technologies.