Cours lanagage c

Disponible uniquement sur Etudier
  • Pages : 222 (55288 mots )
  • Téléchargement(s) : 0
  • Publié le : 12 octobre 2010
Lire le document complet
Aperçu du document
Les pointeurs. Nous y voici enfin.Autant vous prévenir tout de suite : ce chapitre ne sera pas une balade de plaisance. Oh que non ;)Nous sommes encore bien loin de la fin du cours de programmation, et pourtant je peux vous dire que c'est ce chapitre qui sera votre plus grand obstacle. C'est un véritable tournant que nous allons prendre dès maintenant en découvrant ce qu'on appelle lespointeurs en C.A titre purement informatif (et ce n'est pas parce que j'aime bien raconter ma vie :p ), il faut savoir que, plus jeune, j'avais essayé d'apprendre la programmation en C / C++ en lisant des livres. Quel que soit le livre, c'était toujours la même chose : arrivé au chapitre des pointeurs, je ne comprenais plus. Je ne comprenais pas :
Comment ça fonctionnait
A quoi ça pouvait bienservir
Aujourd'hui le temps a passé et je sais enfin de quoi il s'agit. Je sais aujourd'hui qu'on ne peut pas faire de programme en C sans se servir de pointeurs. Même dans "Plus ou Moins", vous en avez utilisé sans le savoir ^^Je vais faire mon maximum pour vous expliquer de ce dont il s'agit, doucement et sûrement. N'allez pas trop vite, vous pourriez vous brûler les ailes en un temps record;)Restez attentifs et accrochez-vous : c'est maintenant ou jamais qu'il faut quadrupler d'attention. Ceux qui seront toujours en vie à la fin de ce chapitre auront gagné un pass pour la pluie de bonnes choses qui vous attend après :)
(Ca va je vous ai pas trop fait peur là ?) :lol:
Sommaire du chapitre :
Icône du chapitre
Un problème bien ennuyeux
La mémoire, une questiond'adresse
Utiliser des pointeurs
Envoyer un pointeur à une fonction
Qui a dit : "Un problème bien ennuyeux" ?
Q.C.M.

Chapitre précédent Sommaire Chapitre suivant

Un problème bien ennuyeux Un des plus gros problèmes avec les pointeurs, en plus d'être assez difficiles à assimiler pour un débutant, c'est qu'on a du mal à comprendre à quoi ça peut bien servir.Alors bien sûr, jepourrais vous dire : "Les pointeurs c'est totalement indispensable on s'en sert tout le temps, croyez-moi c'est super utile !", mais je vois de là vos mines sceptiques :pAlors, afin d'éviter cela, je vais vous poser un problème que vous ne pourrez pas résoudre sans utiliser de pointeurs. Ce sera en quelque sorte le fil rouge du chapitre. Nous en reparlerons à la fin de ce chapitre et verronsquelle est la solution en utilisant ce que vous aurez appris.Voici le problème : je veux écrire une fonction qui renvoie 2 valeurs."Impossible" me direz-vous !En effet, on ne peut renvoyer qu'une valeur par fonction :Code : C
1 2 3 4 | int fonction() { return machin; } |
Si on indique int, on renverra un nombre de type int (grâce à l'instruction return).On peut aussi écrire unefonction qui ne renvoie aucune valeur avec le mot-clé void :Code : C
1 2 3 4 | void fonction() { } |
Mais renvoyer 2 valeurs à la fois... c'est pas possible. On ne peut pas faire 2 "return" ni rien.Alors supposons que je veuille écrire une fonction à laquelle on envoie un nombre de minutes, et celle-ci renverrait le nombre d'heures et minutes correspondantes :Si on envoie 45, la fonctionrenvoie 0 heures et 45 minutes.Si on envoie 60, la fonction renvoie 1 heure et 0 minutes.Si on envoie 90, la fonction renvoie 1 heure et 30 minutes.Allez, soyons fous, tentons le coup :Code : C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include #include /* Je mets le prototype en haut. Comme c'est un tout petit programme je ne le mets pasdans un .h, mais en temps normal (dans un vrai programme) j'aurais placé le prototype dans un fichier .h bien entendu ;o) */ void decoupeMinutes(int heures, int minutes); int main(int argc, char *argv[]) { int heures = 0, minutes = 90; /* On a une variable minutes qui vaut 90. Après appel de la fonction, je veux que ma variable "heures" vaille 1 et que ma variable "minutes" vaille 30 */...
tracking img