by gibi » Wed May 30, 2007 12:00 am
Bonsoir Daniel,
Pour progresser il y a une adresse que j'aime bien sur le langage C
http://www.commentcamarche.net/c/cintro.php3
La difficulté, cest quand on aborde les pointeurs. Cela consiste à passer l'adresse d'une variable plutot que sa valeur. Cela évite de passer trop de données sur la pile du microcontroleur.
On passe l'adresse (le pointeur) dans la fonction appelante, et c'est la fonction qui pointe sur la donnée.
Voici un exemple :
char toto[] ="une fonction veut me lire"; // une variable chaine
char *pt; // un pointeur
pt = toto; // pt a maintenant l'adresse de toto, pas sa valeur. Il pointe sur toto.
En C, toute chaine est terminée par un 0.
On va faire une boucle avec la variable i, et passer l'adresse de la variable toto.
On utilise donc le pointeur *pt, et comme il s'agit d'une adresse et non d'une donnée je peux modifier cette adresse en écrivant *(pt+i)
ce qui ne fait qu'ajouter à mon adresse la valeur i. Donc si *pt a l'adresse 2000, i = 1, *(pt+i) deviendra 2001 et pointera sur 'n' car l'indice des variables en C commence à 0.
i=0;
while(*(pt+i)!=0) // jusqu'au caractère de fin de chaine '\0'
{
write(*(pt+i)); // on passe l'adresse de la variable dans la fonction
i++; // idem à i = i+1
}
void write(char dat)
{
// bla bla...
}
Et ce n'est seulement qu'à ce moment que dat prend la valeur d'une lettre de toto.
J'arrête la pour ce soir.
Bonne lecture du site,
Jean.
'