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+,
HelloWorld
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.
Harkonnen
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 :d
ninja sky
:hap:
LeGreg
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
LeGreg
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
Harkonnen
Citation :
mais c quoi la pile ?
Citation :
c'est le stack (en anglais dans le texte).
[:xp1700]
HelloWorld
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.
gizmo
c'est le stack (en anglais dans le texte).
airseb
donc ok :jap:
mais c quoi la pile ?
chrisbk
airseb a écrit a écrit :
donc ça permet de modifier n'importe quelle variable passée en paramètre ?
yep
airseb
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 ?
chrisbk
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
verdoux
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]
Willyzekid
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)
chrisbk
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
Je@nb
parce que c un histoire de pile ou ché pas koi lol
cassidy
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 :)
airseb
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 ?
gee
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
Willyzekid
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.)
chrisbk
Va falloir t'acheter un solide bouquin sur le sujet (Le C en 21 jours me parait impec, il m'a bpc aidé)