Obligement - L'Amiga au maximum

Vendredi 19 avril 2024 - 02:49  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : C - les pointeurs de fonction
(Article écrit par Roméo Rapido et extrait d'A-News (Amiga News) - septembre 1990)


Nous allons aborder une notion de C assez ardue : les pointeurs de fonction. Mais, comme c'est la rentrée, je ne vais pas vous faire du "bourrage de crâne" avec un listing de 10 km ; vous allez saisir le principal en une vingtaine de lignes.

Avant tout, précisons autant que faire ce peut ce qu'est un pointeur de fonction : c'est la même chose qu'un pointeur de caractère ou d'entier, la seule différence réside dans le fait qu'il pointe sur la première instruction de la fonction considérée. Dans notre exemple, nous allons initialiser un tableau de pointeurs de fonctions puis nous ferons appel à ces fonctions par une boucle FOR. Le deuxième exemple est plus compliqué puis que c'est le retour de la fonction qui permet d'appeler la fonction suivante.

C

Bien entendu, comme pour les pointeurs de caractères, tout est permis ou presque. Il est possible de faire des affectations du style f = Fonction1 (remarquez que, comme pour les tableaux, le nom est un pointeur sur le premier élément, ici le nom est un pointeur sur le début de la fonction) puis d'utiliser f dans un appel comme celui-ci :

résultat = (*f)()

Bien que cela soit possible, il vaut mieux éviter les opérations sur les pointeurs. Il est fortement déconseillé d'écrire, par exemple, f++ si f est un pointeur de fonction. Mais en principe, tout compilateur C normalement constitué doit retourner une erreur du type "opération illégale sur les pointeurs de fonction". Il est tout de même possible de faire de telles opérations en passant par des castings (changement de type) exemple :

C

Le pointeur de fonction a maintenant une adresse impaire ce qui provoquera une erreur d'adressage si l'on tente d'exécuter le code de la fonction. Il convient donc de ne pas utiliser ce genre de bidouille ou, du moins, de les manipuler avec une extrême précaution. Vous savez maintenant l'essentiel sur les pointeurs de fonctions et leur mode d'utilisation. Un dernier détail : mais à quoi ça sert ? Une des applications qui me vient à l'esprit est la programmation d'analyseurs syntaxiques et d'automates.


[Retour en haut] / [Retour aux articles]