Initiation au C cours n10
80 pages
English

Initiation au C cours n10

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
80 pages
English
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Pointeurs de fonctions
Listes simplement chaˆın´ees
Listes doublement chaˆın´ees
Initiation au C
◦cours n 10
Antoine Min´e
´Ecole normale sup´erieure
10 mai 2007
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 10 Pointeurs de fonctions
Listes simplement chaˆın´ees
Listes doublement chaˆın´ees
Plan du cours
pointeurs de fonctions,
structures de donn´ees dynamiques :
listes simplement chaˆın´ees,
listes doublement chaˆın´ees.
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 10 Pointeurs de fonctions
Rappels sur les prototypes
Listes simplement chaˆın´ees
Pointeurs de fonctions
Listes doublement chaˆın´ees
Pointeurs de fonctions
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 10 Pointeurs de fonctions
Rappels sur les prototypes
Listes simplement chaˆın´ees
Pointeurs de fonctions
Listes doublement chaˆın´ees
Rappels sur les prototypes de fonctions
Prototype = d´eclaration pr´ecisant :
le nom de la fonction,
son type de retour, ou void,
le nombre et le type de ses arguments.
Exemples
int additionne(int x, int y);
void affiche(char*);
Diff´erences avec une d´efinition de fonction :
le corps est omis (remplac´e par;),
le nom des arguments est facultatif,
une fonction peut ˆetre d´eclar´ee plusieurs fois.
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 10 Pointeurs de fonctions
Rappels sur les prototypes
Listes simplement chaˆın´ees
Pointeurs de fonctions
Listes doublement chaˆın´ees
Rappels sur ...

Sujets

Informations

Publié par
Nombre de lectures 90
Langue English

Extrait

PointeursdefoncitnoLssietssmilpenemhatcn´ˆısLeeetsiuodsmelbctnen´eehaˆısnAot´EcolenineMin´ere´prueiamrouselnaiocuCnieIatti
Initiation au C cours n10
´ Ecolenormalesupe´rieure
10 mai 2007
AntoineMine´
n01uosr
nioPnsioctonefsdurteˆahce´nıiLsesetsstLisieslempntmee´sedoublementchaˆıncolenormMin´e´EAtnioenurcoCauontiiaitnIerueire´pusela
listesdoublementchaˆıne´es.
listessimplementhaıˆ´ c nees,
pointeurs de fonctions,
0
structuresdedonn´eesdynamiques:
Plan du cours
ns1
melempsiınaˆchnttsiLsee´elbuodsePoursdintetcoifenotssesniLmentchaˆın´eesueire´puselamronCauontiiaitInreAtncolee´EMin´oine0
Pointeurs
Rappels sur les prototypes Pointeurs de fonctions
fonctions
de
ocruns1
iruepue´tiaiernIauCtionsn1cour
Exemples int additionne(int x, int y) ; void affiche(char*) ;
Prototype =noitaralce´drp:ntsaci´e lenomde la fonction, sontype de retour, ouvoid, le nombre et letype de ses arguments.
erences Di´avecuned´enitiondefonction: le corps est omisempl(raprcae´;), le nom des arguments est facultatif, unefonctionpeuteˆtrede´clar´eeplusieursfois.
0tnAenio´niM´EelecormnoesalsrueofedPtnioteisimsstincsLonlrseslustopyrptoˆın´tchaappeeesRdsetsiLsnemelbuotcenempleen´ˆıhanotcoisnlesprototypesdefoitcaRsnlepprussPoesteinsduronef
missetsiLsnoitcnfoderseuntoiPmeneuolbetdsLssin´eehaˆıentcplemnsioctonotorpselfedsepytsulsesrlotprypotahct´nıˆRseeeppactionsRappelssurseoPnietrudsfenontAneoi
b.c int fun2(void);
int main() { return fun2(); }
Exemple :
a.c int fun1(int x);
Utilite du prototype : ´ informationn´ecessairepourcompilerunappelde fonction.
Siunprototypeestdonne´,lafonctionpeutˆetred´enie apre`slel,o app u dansuneautreunite´decompilation.
0
int fun2(void) { return fun1(1); }
int fun1(int x) { return x+1; }
ns1courauCtionitianIerueire´puselarmnoleco´Een´Mi
tcoisnnsPointeursdefonsruo01nanoicCu
Pointeur de fonction =variable contenant l’adressed’une fonction, dont le type indique leprototype de la fonction.
ptrpeut contenir l’adresse de toute fonction prenantNarguments, de typestype1`atypeN, et retournant une valeur de typetype-ret.
Chaquefonctionauneadresseenme´moire.
D´eclarationdunpointeurdefonctionptr type-ret(*ptr)(type1,. . .,typeN) ;
otnAe´niMeniolen´Eclesuormaeiru´preittaIeininteursdefonctiolrserptotopyseoPn´ˆısReepeapsulsdsetlbuonemeahcthaˆıentcsLisn´eesietnoLslpmessmirseuntoitincfodeP
nteuPoinocnitedofctnemelbee´nıˆahsLeen´ˆıousdteismilpetssctahmenefoncrsdesListionitatednoniopruetefsdctonnsioecAtotopyseoPnietrusRappelssurlespr
int bidule(int y);
anoitaitinIeruei
Affectation :ptr = f ;ou ` fnom d’une fonction de prototype compatible avecest le ptr, fpetyequmednemeˆnofeoitcointeurdestunpptr.
Exemples d’affectation int truc(int x) { ... }
void main() { int (*ptr)(int); ptr = truc; ptr = bidule; }
10nrsoucuCAntoineMin´e´Ecloneroamelus´pre
redofuesriotnepPstotysprourleelssuetnioprapnoitcnfodeelppsAontinchcˆanıe´pmelemtnListessionctionssee´ppaRhctnnıˆaubdomeleLiesesstteursdefPoin´eupesalrmnoleconoitaitinIerueir0
Appel par pointeur :identique`aunasiasequleppofeditcnlcno ptr(arg1,. . .,argN) ;ou x = ptr(arg1,. . .,argN) ;
Exemple d’appel int bidule(int y);
sn1courauC
int main() { int (*ptr)(int); ptr = bidule; returnptr(2); }
iM´neE´Atnioen
oitcnofesetsiLsnmelempsiınaˆchntiLtse´sebuelseodchaˆmentesRaın´ePointeursderieurrdresup´odnoitcnof:noitcalippsAontincfosredtnuePsioyteprotolespssurppelitinIeruCuanoitanrsouc
void affiche(char* s) { printf("%s\n", s); }
void main() { char* t[] = { "toto", "titi", NULL }; _ u(t,affiche); affiche tablea }
{
Fonctionncfoontipaeeneruar´mte´rap. =on passe un pointeur de fonction en argument.
Exemple void affiche_tableau(char* tab[],void (*f)(char*)) int i; for (i=0; tab[i]; i++)f(tab[i]); }
10´e´EcoltoineMinus´preeineroamelnA
ıˆahee´nsiLsdsetblouenemhatcPno´iˆnıtuesredofcnitnoLsistessimplementclselrusssetsirtcueeSspOe´uteronsVratitionariareeuitInupesri´eocCnsruitaiuanontoineMiAelonmrla´neE´oc
Listes
simplement
chaˆın´ees
10
VariationssurlestcruOe´pretaoisnchntınaˆes´eruStiLsesetsbuodemelsetsilsiesstLinsioctone´nıˆahctnemelpmdsfeetruoPnitnAenio´niME´elecormnoesal´euptionitiareInrieu0
Liste =eqs´rdeoncueeeno´nmemtsdee.etypdmenee´´l ˆ
Principe
ns1ocruuaC
lamultiplicite´des´ele´mentscompte(12,43,27,9)6= (12,43,27,9,9)
Listesimplementchaıˆne´e= repre´sentationou`chaque´ele´mentpointesur le suivant.
Exemple : liste d’entiers (12,43,27,9).
lordredes´el´ementscompte:(12,43,27,9)6= (12,27,43,9)
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents