Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
799 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Auteur Sujet :

Mais...a quoi servent les pointeurs???

n°828883
lunarnet76
Posté le 22-08-2004 à 13:50:14  profilanswer
 

Reprise du message précédent :
Non mais lol!!!
bon donc apparement ca devient plutot obligatoire avec les listes chainés, donc quand j y serai je les utiliserais!!!cool!


---------------
!jb!
mood
Publicité
Posté le 22-08-2004 à 13:50:14  profilanswer
 

n°828941
Taz
bisounours-codeur
Posté le 22-08-2004 à 16:14:24  profilanswer
 

t'as rien compris ... moi je te fais une liste chainée dans un tableau sans une seule *

n°829084
p lejarre
Posté le 22-08-2004 à 22:17:28  profilanswer
 

Taz a écrit :


encore du mauvais C


 
c'est quoi du mauvais C.  
 
le mauvais C est du C qui marche pas chez le client ou qui est difficilement maintenable.  
 
le mauvais C  c'est le mauvais programme, celui qui cause des retours clients. En quoi de faire des listes avec des pointeurs cause des disfonctionnements ?
 
le mauvais C  c'est le programme dont les algos sont peu performants et mal etudiés. Le mauvais algo c'est celui qui est bricolé à la va vite et qui admets peu de modifications. le bon est étudié proprement, qui sépare bien les données et qui admets un grand nombre de modifs.  
 
bilan est ce que ca marche ou est ce que ca marche pas. le reste c'est pas le problème.

n°829090
Taz
bisounours-codeur
Posté le 22-08-2004 à 22:22:36  profilanswer
 

à la base c'est une cat C++ et si tu as le niveau C débutant 1ère année ça te concerne. Ne raconte pas de sornettes aux autres, c'est tout ce que je demande.

n°829120
WhatDe
Posté le 22-08-2004 à 22:51:00  profilanswer
 

On est bien protégé avec Taz, à chaque bourde qu'on écrit il est là pour nous remettre dans le droit chemin, chapeau :)

n°829193
Ace17
Posté le 23-08-2004 à 08:49:04  profilanswer
 

WhatDe a écrit :

Taz notre maître tout puissant, guidez-nous vers la voie de la sagesse. Amen !


WhatDe a écrit :

On est bien protégé avec Taz, à chaque bourde qu'on écrit il est là pour nous remettre dans le droit chemin, chapeau :)

Tu pourrais pas lui s*cer la qu*ue en privé stp?  :pfff:

n°829215
Taz
bisounours-codeur
Posté le 23-08-2004 à 09:20:47  profilanswer
 

bah non entre potes c'est pas trahir :o

n°829218
Ace17
Posté le 23-08-2004 à 09:23:22  profilanswer
 

Taz a écrit :

bah non entre potes c'est pas trahir :o


[:rofl]

n°829746
WhatDe
Posté le 23-08-2004 à 15:20:55  profilanswer
 

On est sur un forum libre non ? Les modos sont gentils ici :o

n°829876
jagstang
Pa Capona ಠ_ಠ
Posté le 23-08-2004 à 17:10:19  profilanswer
 

Ace17 a écrit :

Tu pourrais pas lui s*cer la qu*ue en privé stp?  :pfff:

[:slurrrp]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
mood
Publicité
Posté le 23-08-2004 à 17:10:19  profilanswer
 

n°829891
lsdYoYo
gravity powered
Posté le 23-08-2004 à 17:22:04  profilanswer
 

La notion de pointeur est un des éléments les plus important du C/C++. Si cette notion n'est pas bien comprise, le C ne sera jamais complètement maîtrisé. Ce sera pire en C++ lorsque viendra s'ajouter le passage d'arguments par référence (qui n'est qu'un passage par pointeur avec une syntaxe simplifiée). Il faut en bouffer rapidement pour que les choses deviennent plus claires. Et le plus tôt sera le mieux.
 
Alors, à quoi servent les pointeurs en C/C++ ?
Beaucoup de choses. Il est nécessaire de comprendre, par exemple que :

Code :
  1. "Bonjour"


Cette chaîne de caractère est un pointeur ==> "char *". Vous vous servez peut-être des pointeurs sans le savoir.
 
Exemple plus concret : on doit charger en mémoire le contenu d'un fichier texte. Pour réserver la mémoire, on pourrait déclarer : "char buffer[2000];". Mais quel est le chiffre magique ? Trop petit : on ne pourra pas lire de gros fichiers. Trop gros : on gâche inutilement des ressources.

Citation :

Soldat, dans l'armée il n'y a que 2 tailles : la trop petite et la trop grande. Choisis ta taille.


En supposant que l'on ait la taille du fichier dans une variable "int size;" faire "char buffer[size];" est une syntaxe invalide.
La solution : allouer dynamiquement la mémoire. On est obligé de passer par un pointeur :

Code :
  1. char *buffer; int size;
  2. size = lecture_taille_fichier();
  3. buffer = (char *) malloc(size +2);  //+2 par sécurité


Voilà un premier exemple incontournable : l'allocation dynamique.
 
Un autre ?
Lorsqu'on appelle une fonction avec des arguments :

Code :
  1. void func(int arg)
  2. {
  3. printf("%d", arg);
  4. arg = 18; //modif de la copie
  5. }
  6. .../...
  7. void main(void)
  8. {
  9. int x = 5;
  10. func(x);  //Appel avec la valeur de "x"
  11. }


Dans cet exemple, "func" ne pourra jamais modifier le "x" du "main" car lors de l'appel, le compilo a recopié sa valeur sur la pile. La fonction "func" ne travaille donc que sur une copie.
La soluce : passer un pointeur sur la variable.

Code :
  1. void func(int *arg)
  2. {
  3. printf("%d", *arg);
  4. *arg = 18;     //Modif de la mémoire pointée par "arg"
  5. }
  6. void main(void)
  7. {
  8. int x = 5;
  9. func(&x);  //Appel avec le pointeur sur "x"
  10. }


Bon, ce n'est qu'un exemple. En dehors des livres de cours sur le C, on emploi rarement des pointeurs sur de simples entiers, mais plutôt des pointeurs sur des structures.
En C++, on pourra se servir du passage d'arguments par référence qui allége les syntaxes des fonctions appelante et appelée.
 
Voilà, j'espère que mes éclaircissements seront utiles. J'y ai passé assez de temps ! Si votre objectif n'est pas de devenir un pro du C, ok, laissez tomber, on peut(?) faire sans. Sinon : il faut en bouffer ! Ne pas hésiter à "bidouiller", à jouer avec son compilo. La syntaxe n'est pas évidente, ça se compile pas ? Une '*' en plus, toujours en erreur, un '&' ? Ah ok, c'était ça... On est tous passés par là...


---------------
If I want to fail and succeed, which I have done ?
n°829919
Taz
bisounours-codeur
Posté le 23-08-2004 à 17:43:47  profilanswer
 

le truc qui va de paire c'est de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PAS CASTER LES POINTEURS DANS TOUS LES SENS :o

n°829923
WhatDe
Posté le 23-08-2004 à 17:45:42  profilanswer
 

Taz a écrit :

le truc qui va de paire c'est de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PAS CASTER LES POINTEURS DANS TOUS LES SENS :o


Mais pourquoi est-il aussi méchant  :??:

n°829925
Taz
bisounours-codeur
Posté le 23-08-2004 à 17:48:09  profilanswer
 

pourquoi faire des cast inutiles ?

n°829971
lsdYoYo
gravity powered
Posté le 23-08-2004 à 18:13:22  profilanswer
 

Taz, je n'ai pas compris ta remarque : "le truc qui va de paire c'est de PAS CASTER LES POINTEURS DANS TOUS LES SENS",
où il y'a-t-il des cast inutiles ?


---------------
If I want to fail and succeed, which I have done ?
n°829973
chrisbk
-
Posté le 23-08-2004 à 18:14:41  profilanswer
 

oué, faisez gaffe, un cast peut vous couter un branchement ou meme pire pour un dynamic_cast !

n°829977
cris56
Posté le 23-08-2004 à 18:17:05  profilanswer
 

lsdyoyo a écrit :


Code :
  1. "Bonjour"


Cette chaîne de caractère est un pointeur ==> "char *".


 
pour moi "bonjour" est une adresse

n°829979
chrisbk
-
Posté le 23-08-2004 à 18:17:33  profilanswer
 

cris56 a écrit :

pour moi "bonjour" est une adresse


 
pour moi c'est une formule de politesse [:petrus75]

n°829980
cris56
Posté le 23-08-2004 à 18:18:20  profilanswer
 

c'est un mot

n°829983
WhatDe
Posté le 23-08-2004 à 18:23:10  profilanswer
 

[:meganne]

n°829984
chrisbk
-
Posté le 23-08-2004 à 18:24:00  profilanswer
 

pis d'ailleurs c'est pas un char * mais un const char * §§§

n°829985
WhatDe
Posté le 23-08-2004 à 18:26:34  profilanswer
 

Taz a écrit :

pourquoi faire des cast inutiles ?


Pourquoi tu n'écris pas un court papier sur le pourquoi de ne pas faire des casts inutiles dans ce genre ? Dans mon bouquin (:lol:) ils le font aussi partout à une exception prêt. Et à la rentrée j'aurais mon cours de C donc si les profs me disent eux aussi de le faire, je fais quoi ?  [:meganne]  
 
Ce serait bien d'avoir une expliquation claire sur le machin pour nous les débutants  ;)

n°829988
chrisbk
-
Posté le 23-08-2004 à 18:28:00  profilanswer
 

WhatDe a écrit :

Pourquoi tu n'écris pas un court papier sur le pourquoi de ne pas faire des casts inutiles dans ce genre ? Dans mon bouquin (:lol:) ils le font aussi partout à une exception prêt. Et à la rentrée j'aurais mon cours de C donc si les profs me disent eux aussi de le faire, je fais quoi ?  [:meganne]  
 
Ce serait bien d'avoir une expliquation claire sur le machin pour nous les débutants  ;)


 
paske c'est chiant, ca alourdi le code, c'est laid, et ca te fous des cmp/jmp partout si tu fais ca en Céplusseplusse avec des classes un peu tordu

n°829989
lsdYoYo
gravity powered
Posté le 23-08-2004 à 18:29:33  profilanswer
 

Woooh, c lourd chrisbk, *merci* pour la précision du "const", ça va bien aider les débutants...


Message édité par lsdYoYo le 23-08-2004 à 18:30:03
n°829990
chrisbk
-
Posté le 23-08-2004 à 18:30:50  profilanswer
 

lsdyoyo a écrit :

Woooh, c lourd chrisbk, *merci* pour la précision du "const", ça va bien aider les débutants...


 
si ton débutant il fait  
 

Citation :

char *bonjour = "bonjour";
bonjour[0] = 'c';


 
il va se poser des questions


Message édité par chrisbk le 23-08-2004 à 18:32:37
n°829991
WhatDe
Posté le 23-08-2004 à 18:32:04  profilanswer
 

chrisbk a écrit :

si ton débutant il fait  
 

Citation :

char *bonjour = bonjour;
bonjour[0] = 'c';


 
il va se poser des questions


C'est clair  :lol:

n°829992
chrisbk
-
Posté le 23-08-2004 à 18:32:46  profilanswer
 

corrigé, gnagnagna [:ohtusais]

n°829993
Taz
bisounours-codeur
Posté le 23-08-2004 à 18:33:07  profilanswer
 

manque de bol "bonjour" c'est un tableau ... alors oui le débutant il va vachement apprécié

n°829994
WhatDe
Posté le 23-08-2004 à 18:33:17  profilanswer
 

:kaola:

n°829997
cris56
Posté le 23-08-2004 à 18:35:12  profilanswer
 

c'est clair ca explique rien :D

n°829998
chrisbk
-
Posté le 23-08-2004 à 18:35:54  profilanswer
 

Spaske "bonjour" est une metainterface non pré-typé de char *, bande de nains :o

n°830000
cris56
Posté le 23-08-2004 à 18:41:01  profilanswer
 

tu viens de me demonter le crane avec ta phrase

n°830006
lsdYoYo
gravity powered
Posté le 23-08-2004 à 18:56:15  profilanswer
 

C'est malin, avec nos conneries, on a fait fuir tout le monde ! :sarcastic:
 
Plus personne n'emploiera les pointeurs, d'ailleurs y'a plus de pointeurs : ils codent tous en VisualBasic...

n°830009
lsdYoYo
gravity powered
Posté le 23-08-2004 à 19:00:51  profilanswer
 

Au fait, c'est super que le débutant se pose des questions. C'est bien une  manière de progresser, non ?
L'aspect déroutant au départ est bien le mélange possible entre pointeurs et tableaux.

n°830045
Taz
bisounours-codeur
Posté le 23-08-2004 à 20:20:08  profilanswer
 

« L'aspect déroutant au départ est bien le mélange possible entre pointeurs et tableaux. » ce mélange n'est le fait que de mauvais enseignants.
 
tout le monde comprend bien que * déférence un pointeur et est aussi l'opérateur de multiplication, pour le distingo tableau / pointeur, c'est aussi simple. L'an dernier j'ai filé 10H de cours de C, et je t'assure qu'il n'y avait aucun problème à la fin.

n°830086
porsche ma​n
le maître
Posté le 23-08-2004 à 21:19:32  profilanswer
 

Salut a vous maitres du C et autres...
Je voudrai savoir pour débuter :
quels compilo suggérez vous ? (j'ai actuellement dev C++, qui fait aussi pr C je crois..
Donnez moi les fonctions et structures principales pr programmer propre.
Donnez les définitions (rapides)si vous pouvez entre parenthèses après les mot compliqués pr ne pas ecraser les débutants (tome 1, first chapitre).
Merci de répondre.

n°830088
Joel F
Real men use unique_ptr
Posté le 23-08-2004 à 21:20:59  profilanswer
 

pas bon topic :o
lsi le biblio link plus haut :o

n°830262
lunarnet76
Posté le 23-08-2004 à 23:22:16  profilanswer
 

bon c'est cool vos trucs mais du coup ca me fait me poser une question de plus :
qu'est ce qui est mieux entre printf et cout??? parce que j'ai beau avoir lu des trucs sur le sujet, je vois pas trop lequel choisir et puis comme j ai l habitude de std::cout ben je l'utilise!!!
Sinon euh... disons que personne ne ma donné de Super exemples ou y est des ->, des * ... lol enfin si j en ai eu mais bon... a chaque fois (meme sur le net) l'exemple c'est soit pour utiliser avec les fichiers,soit avec les chaines de characeteres... mais sinon a quoi d'autre ca sert et surtt vraiment donné moi un exemple ou on ne PEUT PAS s'en passer (p-e que vous l'avez deja fait alors si c le cas dites moi bien qu'on ne peut pas s'en passer!) et encore Merci!!!
 
ps: ca a l'air de beaucoup servir pour l'allocation dynamique de memoire mais j'y suis pas encore!


Message édité par lunarnet76 le 23-08-2004 à 23:24:59

---------------
!jb!
n°830279
drasche
Posté le 23-08-2004 à 23:33:26  profilanswer
 

lsdyoyo a écrit :

C'est malin, avec nos conneries, on a fait fuir tout le monde ! :sarcastic:
 
Plus personne n'emploiera les pointeurs, d'ailleurs y'a plus de pointeurs : ils codent tous en VisualBasic...


[:cupra]
 
[:blueflag]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°830354
printf
Baston !
Posté le 24-08-2004 à 00:59:23  profilanswer
 

lunarnet76 a écrit :

bon c'est cool vos trucs mais du coup ca me fait me poser une question de plus :
qu'est ce qui est mieux entre printf et cout??? parce que j'ai beau avoir lu des trucs sur le sujet, je vois pas trop lequel choisir et puis comme j ai l habitude de std::cout ben je l'utilise!!!
Sinon euh... disons que personne ne ma donné de Super exemples ou y est des ->, des * ... lol enfin si j en ai eu mais bon... a chaque fois (meme sur le net) l'exemple c'est soit pour utiliser avec les fichiers,soit avec les chaines de characeteres... mais sinon a quoi d'autre ca sert et surtt vraiment donné moi un exemple ou on ne PEUT PAS s'en passer (p-e que vous l'avez deja fait alors si c le cas dites moi bien qu'on ne peut pas s'en passer!) et encore Merci!!!
 
ps: ca a l'air de beaucoup servir pour l'allocation dynamique de memoire mais j'y suis pas encore!


 
printf bien sûr [:petrus75]
 
En fait, tout dépend de si tu fais du C ou du C++.
 
Concernant les pointeurs, on ne peut pas s'en passer lorsqu'on fait de l'allocation dynamique de mémoire, justement.
Mais ça sert aussi lorsque tu veux passer des fonctions en argument (pointeur sur fonction).

n°830383
lunarnet76
Posté le 24-08-2004 à 03:36:24  profilanswer
 

fait du c++ moi !!!


---------------
!jb!
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3

Aller à :
Ajouter une réponse
 

Sujets relatifs
[PHP] Question POO / pointeurs [résolu- presque]type d'une difference de pointeurs
conversion adresse de tableau de pointeursPointeurs je comprends plus rien
Pointeurs ?????[C] tableau de pointeurs...
2 pointeurs a l'ecran pour 2 sourisProbleme bizard sur les pointeurs en C !
Tableau de pointeurs sur fonctons.Passage de pointeurs en paramètre erronés !
Plus de sujets relatifs à : Mais...a quoi servent les pointeurs???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR