quelqu'un peut me dire quelle est l'utilité des pointeur en langage C - Programmation
Marsh Posté le 25-05-2002 à 23:01:22
Va falloir t'acheter un solide bouquin sur le sujet (Le C en 21 jours me parait impec, il m'a bpc aidé)
Marsh Posté le 25-05-2002 à 23:04:53
chrisbk a écrit a écrit : Va falloir t'acheter un solide bouquin sur le sujet (Le C en 21 jours me parait impec, il m'a bpc aidé) |
Plutôt sur la programmation en général (et sur les variables dynamiques que ce soit en C, C++, Ada, etc.)
Marsh Posté le 25-05-2002 à 23:05:28
un pointeur :
permet de pointer sur une adresse
dans le cas d une allocation dynamique
qd tu appele un tableau
tu n appele pas dirctement le tableau mais le pointeur d abord
Marsh Posté le 25-05-2002 à 23:07:37
gee a écrit a écrit : un pointeur : permet de pointer sur une adresse dans le cas d une allocation dynamique qd tu appele un tableau tu n appele pas dirctement le tableau mais le pointeur d abord |
mais pourquoi on appelle pas directement le tableau ?
Marsh Posté le 25-05-2002 à 23:08:18
etant autodidacte, au debut de mon apprentisage du C je me suis pose exactement la meme question
Mais une foa que tu maitrises le syteme des pointeurs, tu peux plus t'en passer
Marsh Posté le 25-05-2002 à 23:09:14
cassidy a écrit a écrit : etant autodidacte, au debut de mon apprentisage du C je me suis pose exactement la meme question Mais une foa que tu maitrises le syteme des pointeurs, tu peux plus t'en passer |
disons que sans ca le C/C++ sert pu trop a grand chose
Marsh Posté le 25-05-2002 à 23:11:13
chrisbk a écrit a écrit : disons que sans ca le C/C++ sert pu trop a grand chose |
J'insiste!!! J'insiste: n'importe quel language ne sert plus à rien!!
Fais une pile sans pointeur en ADA?
Toutes les variables en java sont des pointeurs (cachés certes)
Marsh Posté le 25-05-2002 à 23:11:39
Les données sont stockées en mémoire, le code aussi d'ailleurs.
Un pointeur permet de désigner une zone de la mémoire (pointeur sur un int, sur une structure, sur une fonction) et de manipuler l'objet pointé.
Le cas le plus commun en C:
int b = 2;
void f(int a) { a = 1;}
void g(int *pa) {*pa = 1;}
après f(b), b vaut toujours 2 (parce que le contenu de b a été copié sur la pile puis passé à f mais b n'existe pas pour f)
après g(&b), b vaut 1 (g agit directement sur l'adresse du contenu de b)
[jfdsdjhfuetppo]--Message édité par Verdoux le 25-05-2002 à 23:12:53--[/jfdsdjhfuetppo]
Marsh Posté le 25-05-2002 à 23:15:46
Willyzekid a écrit a écrit : J'insiste!!! J'insiste: n'importe quel language ne sert plus à rien!! Fais une pile sans pointeur en ADA? Toutes les variables en java sont des pointeurs (cachés certes) |
oh, je dis pas, mais je connais quasiement que C/C++, alors bon
Marsh Posté le 25-05-2002 à 23:17:44
Verdoux a écrit a écrit : Les données sont stockées en mémoire, le code aussi d'ailleurs. Un pointeur permet de désigner une zone de la mémoire (pointeur sur un int, sur une structure, sur une fonction) et de manipuler l'objet pointé. Le cas le plus commun en C: int b = 2; void f(int a) { a = 1;} void g(int *pa) {*pa = 1;} après f(b), b vaut toujours 2 (parce que le contenu de b a été copié sur la pile puis passé à f mais b n'existe pas pour f) après g(&b), b vaut 1 (g agit directement sur l'adresse du contenu de b) |
donc ça permet de modifier n'importe quelle variable passée en paramètre ?
Marsh Posté le 25-05-2002 à 23:18:03
airseb a écrit a écrit : donc ça permet de modifier n'importe quelle variable passée en paramètre ? |
yep
Marsh Posté le 26-05-2002 à 07:10:06
La petite analogie que j'aime bien :
le pointeur c'est comme l'adresse d'un site internet. Ca designe aussi bien une petite image qu'un énorme site tout entier.
Un pointeur c'est pareil : ca pointe sur n'importe quelle autre variable : un simple entier ou alors un énorme tableau / structure / classe ... ou autre pointeur !
Et comme une URL, la taille d'un pointeur n'a rien à voir avec la taille de l'objet pointé (sa taille = taille d'un adresse = 32 bits souvent).
La pile c'est ce qui sert à faire passer les paramètres quand on appelle une fonction.
Si l'objet passé en paramètre est trop gros, ca prend du temps à empiler, et donc ca va lus vite si t'empiles juste un pointeur.
Un pointeur c'est aussi un moyen pour modifier une variable passée en paramètre.
Y'a bcp d'autres applications ... trouve un livre.
Marsh Posté le 26-05-2002 à 13:55:39
Citation : |
Citation : |
Marsh Posté le 26-05-2002 à 16:06:40
airseb a écrit a écrit : ou C++ ? |
Au risque de repeter ce qu'ont dit les autres, lis un livre !
le langage C par Kernighan et Ritchie
LEGREG
Marsh Posté le 26-05-2002 à 16:12:10
un pointeur = une adresse memoire
toute variable existe en memoire et on la retrouve grace a un pointeur (constant ou non).
C'est du bas niveau, donc certains langages cachent la notion de pointeur.
Un pointeur peut lui-meme etre une variable et avoir une adresse en memoire (pointeur vers un pointeur).
la pile: une zone de la memoire ou l'on empile des elements
(variables, pointeurs) en "dernier arrivé- premier parti"
Comme sur une pile d'assiette ou tu prends toujours les assiettes du dessus. C'est utilisé tout le temps et partout en informatique.
LEGREG
Marsh Posté le 26-05-2002 à 16:28:09
legreg> clair que le bouquin de K & R pour l'apprentissage du C est le meilleur, même s'il est assez ancien, y'en a pas de mieux
en tout cas, on peut remarquer ici une chose : quand un newbie demande quel langage apprendre, tout le monde lui déconseille l'assembleur...
moi, j'ai rééllement commencé à coder par l'assembleur sur Amiga, (je ne compte pas mes années de préhistoire ou je faisais mumuse avec le basic du CPC...), et il faut bien reconnaitre que quand je suis passé au C, les notions de pointeur ou de pile me paraissaient totalement naturelles, alors que les autres galéraient au possible...
je ne dis pas qu'il faut commencer en apprenant l'assembleur, mais il faut bien reconnaitre que sa maitrise permet de comprendre aisément tous les points obscurs des autres langages.
ASM powaaaaaaaaa
Marsh Posté le 27-05-2002 à 07:00:11
Citation : en tout cas, on peut remarquer ici une chose : quand un newbie demande quel langage apprendre, tout le monde lui déconseille l'assembleur... |
Si si, on s'était déjà engueulé la dessus ... (vous avez remarquer comment c'est facile de créer un troll / flame : "Quel langage pour débuter ?" )
y'en avait un qui était farouchement pour car il considérait que bien comprendre ce qui était fait était important, et l'autre non car du moment que ça marchait, pourquoi perdre du temps à étudier pourqui ça marche.
Moi je ne suis pas pour débuter avec l'assembleur, mais je suis pour l'apprendre dès que les bases en prog sont acquises (pourquoi tout compliquer dès le début ?).
L'assembleur ça sert (presque) à rien de le savoir ... mais c'est très instructif à apprendre.
Marsh Posté le 27-05-2002 à 07:27:13
airseb a écrit a écrit : donc ça permet de modifier n'importe quelle variable passée en paramètre ? |
Et de ne passer a une fonction comme argument qu'un pointeur, de taille faible, au lieu eventuellement d'une structure de taille importante.
A+,
Marsh Posté le 25-05-2002 à 23:00:40
ou C++ ?