Pages: [1] 2   Go Down
Author Topic: Les pointeurs et tableaux  (Read 7662 times)
0 Members and 1 Guest are viewing this topic.
Made in Belgium
Offline Offline
God Member
*****
Karma: 1
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yop yop,
Comme il a l'air d'être très demandé, je prépare un tutoriels sur l'utilisation des pointeurs et tableaux.


* tuto_pointeurs.pdf (825.64 KB - downloaded 688 times.)
« Last Edit: June 26, 2012, 02:18:25 pm by osaka » Logged


Offline Offline
God Member
*****
Karma: 5
Posts: 687
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir et merci
Osaka  smiley-wink
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
Logged

The truth is elsewhere !!

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3442
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: April 17, 2012, 02:27:08 pm by fdufnews » Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2184
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Made in Belgium
Offline Offline
God Member
*****
Karma: 1
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.  smiley
Logged


Made in Belgium
Offline Offline
God Member
*****
Karma: 1
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quelques changements, j'ai tenté de clarifier certaines choses et ajouter quelques schémas (donc plus lourd  smiley-confuse).
Est-ce plus accessible pour les débutants ?
« Last Edit: June 26, 2012, 02:22:36 pm by osaka » Logged


France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2184
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Made in Belgium
Offline Offline
God Member
*****
Karma: 1
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.  smiley-wink
Là je viens de commencer les tableaux, si quelqu'un à une remarque pour savoir si je suis dans le bon ?  smiley-lol
« Last Edit: April 19, 2012, 04:44:25 pm by osaka » Logged


Made in Belgium
Offline Offline
God Member
*****
Karma: 1
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

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(){}

« Last Edit: April 20, 2012, 12:39:02 pm by osaka » Logged


Corsica
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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
Logged

Aix en Provence
Offline Offline
Sr. Member
****
Karma: 2
Posts: 264
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !

Logged

Made in Belgium
Offline Offline
God Member
*****
Karma: 1
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
Logged


Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 366
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aucun lien vers ton PDF ne fonctionne pour moi dans ton sujet smiley-cry
Logged

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 !

Made in Belgium
Offline Offline
God Member
*****
Karma: 1
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aucun lien vers ton PDF ne fonctionne pour moi dans ton sujet smiley-cry

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


Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 366
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

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 !

Pages: [1] 2   Go Up
Jump to: