Go Down

Topic: Les pointeurs et tableaux (Read 9498 times) previous topic - next topic

osaka

Apr 17, 2012, 06:28 pm Last Edit: Jun 26, 2012, 09:18 pm by osaka Reason: 1
Yop yop,
Comme il a l'air d'être très demandé, je prépare un tutoriels sur l'utilisation des pointeurs et tableaux.


AlienArea51

Bonsoir et merci
Osaka  ;)
J'ai survolé ton truc qui à l'air d'etre bien ,mais à cette heure ,j'avoue que ma concentration a un peu baissée  :smiley-mr-green:

@+
William
The truth is elsewhere !!

fdufnews

#2
Apr 17, 2012, 09:08 pm Last Edit: Apr 17, 2012, 09:27 pm by fdufnews Reason: 1
Page 9
Quote

void?loop()?
{?
? int? maVariable?=?20;?
? int* ?monPointeur1?=??&maVariable;?
? int* ?monPointeur2?=?monPointeur1;?
}

Mon ?deuxième ?pointeur ?aura ?pour ?valeur ?la ?même? adresse ?que ?mon ?premier? pointeur?
et ?pointera ?donc ?sur ?la ?même ?variable.?

C'est? comme? si ?j'avais ?fait ?ceci ?avec ?une ?variable ?classique?:?
? int ?maVariable1?=?20;?
? int? maVariable2?=?maVariable1?;?

Ma? deuxième ?variable ?prend? la ?même ?valeur ?(20) ?que ?la ?première,? pour ?les? pointeur? c'est ?pareil ??CQFD.?


Le parallèle est dangereux et peut entraîner des incompréhensions de la part des débutants. Dans le cas de ?maVariable1? et ?maVariable12, elles ont chacune leur vie propre et modifier l'une ne change pas l'autre. Alors qu'avec les pointeurs ce n'est pas le cas, les 2 pointeurs pointent sur la même variable.

Quote
PS: Après viendras la correction aurtaugrafik, j'ai la chance d'avoir une compagne qui est secrétaire de direction à portée de clavier.

Ben elle va pas chômer. On sent que tu entretiens des rapports assez conflictuels avec les infinitifs et les participes passés.

Autrement pour être constructif. Je pense (mais cet avis est personnel) que pour la clarté de la lecture il est préférable d'avoir les renvois en bas de page et non pas en fin de document. Cela évite les aller et retour entre la page en cours de lecture et la page des renvois.
Il faudra aussi aborder l'arithmétique des pointeurs.

68tjs

Bien,
J'ai de la lecture pour les jours de pluie.
Merci

osaka


Le parallèle est dangereux et peut entraîner des incompréhensions de la part des débutants.


Yop yop,

C'est pour cela que je précise bien qu'il s'agit de la valeur du pointeur, il faudra peut être encore plus insisté sur ce point et rajouter un petit schéma ou autre pour ce cas là ?


Dans le cas de ?maVariable1? et ?maVariable2, elles ont chacune leur vie propre et modifier l'une ne change pas l'autre. Alors qu'avec les pointeurs ce n'est pas le cas, les 2 pointeurs pointent sur la même variable.


Disons que là je parle bien du pointeur en temps que variable (d'où le comparatif) donc qui ont également leur vie propre, je peux modifier la valeur de l'un ou l'autre ou même supprimer l'un ou l'autre ou les deux ça ne change rien pour la variable pointée.
Je vais quand même regardé à bien clarifié la chose.
Grand merci pour ton retour.  :)

osaka

#5
Apr 18, 2012, 09:43 pm Last Edit: Jun 26, 2012, 09:22 pm by osaka Reason: 1
Quelques changements, j'ai tenté de clarifier certaines choses et ajouter quelques schémas (donc plus lourd  :~).
Est-ce plus accessible pour les débutants ?

68tjs

Très franchement, en l'instant présent, je te fais confiance. Je pense que ça se gâtera (pour moi) quand j'aurais l'occasion de mettre en pratique

osaka

#7
Apr 19, 2012, 11:42 pm Last Edit: Apr 19, 2012, 11:44 pm by osaka Reason: 1

Très franchement, en l'instant présent, je te fais confiance. Je pense que ça se gâtera (pour moi) quand j'aurais l'occasion de mettre en pratique


Je vais essayé de mettre un maximum de schémas et exemples (j'ai ajouté un exemple pratique via arduino à la fin) et peut être quelques exercices comme il y a rien de tel que la pratique.  ;)
Là je viens de commencer les tableaux, si quelqu'un à une remarque pour savoir si je suis dans le bon ?  XD

osaka

#8
Apr 20, 2012, 07:34 pm Last Edit: Apr 20, 2012, 07:39 pm by osaka Reason: 1
Yop Yop,
Ai bien avancé sur les tableaux, toujours pas de remarques, suggestions ?

Pour donner l'eau à la bouche  :smiley-mr-green: et savoir si ce tuto vous seras utile, vous pouvez tester ce code et voir si la sortie console correspond bien à vos attentes :

Code: [Select]


void setup()
{
 Serial.begin(9600);
 delay(2000);
 int tab[] = {1,2,3,4};
 Serial.print("");
 Serial.print("tab :");
 Serial.println((int)tab);
 Serial.print("&tab :");
 Serial.println((int)&tab);
 Serial.print("&tab[0] :");
 Serial.println((int)&tab[0]);
 
 Serial.println("");
 
 Serial.print("tab[0] :");
 Serial.println(tab[0]);
 Serial.print("*tab :");
 Serial.println(*tab);
 Serial.print("*tab+0 :");
 Serial.println(*tab+0);
}

void loop(){}


patsol

Bonsoir,

J'ai lu attentivement ce tuto. (Difficile à suivre, pour l'instant, à cause de l'orthographe. :smiley-mr-green:)

C'est clair, les schémas sympas.

1/ Ne faudrait-il pas donner des règles de prononciation du genre:
Code: [Select]
int* monPointer = &maVariable;
*monPointer = 16;

du genre:
"pointeur d'entier monPointer = adresse de maVariable"
"variable pointée par monPointer = 16"


2/Pointeurs, tableaux, OK, il faudrait "enchaîner" avec les strings, non?

En tout cas, merci pour ce travail bien utile.

PS

Brisebee

Merci Osaka pour ce super tutoriel que je viens de découvrir, Je vais le lire attentivement, car pour l'instant je n'ai jamais réussi à mettre en oeuvre les pointeurs en C.
Alors que pour moi cela ne devrait pas être un problème de conceptualisation. Car j'ai, en son temps, pas mal programmé en assembleur en utilisant les différents modes d'adressage (indirect, indexé ...). Mais c'est plutôt les questions de syntaxe qui me font prendre les pieds dans le tapis; ce n'est probablement qu'une question d'habitude !

J'ai d'ailleurs une application toute trouvée, puisque dans mon projet de domotique, qui avance à petits pas (mais qui avance, je donnerai des nouvelles bientôt), pour l'instant pour tester le matériel j'ai défini mes plages horaires dans des tableaux, mais il va me falloir faire mieux bientôt.

Encore merci et bravo !


osaka


Alors que pour moi cela ne devrait pas être un problème de conceptualisation. Car j'ai, en son temps, pas mal programmé en assembleur en utilisant les différents modes d'adressage (indirect, indexé ...). Mais c'est plutôt les questions de syntaxe qui me font prendre les pieds dans le tapis; ce n'est probablement qu'une question d'habitude !


Yop BriBri,
En effet en venant de l'assembleur et avec les petit schémas sur la mémoire, tu devrais assé vite faire le parallèle avec le code.
La chose qui perturbe le plus c'est à quel moment utilisé le petit symbole '*', comme il ne signifie pas la même chose selon l'endroit où il ce situe et quand on l'utilise.
Mais au final c'est comme tu le dis :

ce n'est probablement qu'une question d'habitude !

UniseV

Aucun lien vers ton PDF ne fonctionne pour moi dans ton sujet =(
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

osaka


Aucun lien vers ton PDF ne fonctionne pour moi dans ton sujet =(


Petit problème en effet  :smiley-sweat:, je l'ai mis en attachement dans le premier post.
;)

UniseV

Hé bien c'est tout simplement génial, merci à toi.

En tout cas pour moi, la démystification est réussie (à noter que je manipulais déjà des tableaux).

Sev
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

Go Up