}

Langage de programmation C (X) Fonctions II

1991/12/01 Alegria Loinaz, Iñaki | Maritxalar, Montse Iturria: Elhuyar aldizkaria

Tout au long de ce chapitre, nous analyserons des concepts plus avancés de fonctions et de démonstrateurs, la maya, des tâches complexes et des prototypes de fonctions.

Dans le sixième chapitre, nous avons vu comment définir et utiliser les fonctions qui sont des sous-programmes C. On y expliquait la définition des fonctions, l'appel, les références à effectuer ainsi que le mécanisme d'échange de paramètres et de résultats. Tout au long de ce chapitre, nous analyserons des concepts plus avancés sur les fonctions et démonstrations, la fonction maya, les tâches complexes et les prototypes de fonctions.

Fonctions et démonstrations

Les fonctions et démonstrations peuvent être confondues en utilisant naturellement C. Il est donc possible que le paramètre d'une fonction soit l'index, que le résultat de la fonction soit démonstratif et que les fonctions soient référencées par des démonstrateurs.

Les paramètres seront démonstratifs lorsque des paramètres doivent être utilisés par référence, par exemple lorsque le résultat doit être laissé dans le paramètre (cf. programme 1).

Programme 1. Classement de trois nombres.

Le résultat d'une fonction, et donc le type de fonction, peut être un démonstrateur, pour lequel vous devez spécifier le type de données affichées à gauche du nom dans la description de la fonction et le caractère * (voir programme 2).

Programme 2. Une fonction type démonstrateur.

Enfin, les démonstrateurs de fonctions peuvent être très intéressants, car ils nous permettent d'exécuter une fonction ou une routine différente selon une donnée ou un code. Un exemple clair est le vecteur de discontinuités ou le module de gestion des erreurs qui apparaît dans le programme 3. Dans celle-ci, les noms des fonctions, comme ceux des tables, indiquent leur représentatif, de sorte que pour définir une variable montrant n'importe quelle fonction on doit utiliser le symbole *.

Par une allocation, nous localisons l'adresse de la fonction f dans le programme suivant :

est un texte bien écrit dans lequel l'adresse de f est située dans la variable pf.

Programme 3. Module de traitement des erreurs.

Fonction principale

Les programmes C doivent être la principale fonction maya, car c'est la première qui s'exécute. Bien que cette fonction principale du programme ait été utilisée sans paramètres, il peut parfois être intéressant d'obtenir des données de la commande d'exécution du système d'exploitation au moment de l'exécution. Par exemple, quand nous voulons faire un programme qui gère un fichier, nous avons deux options : le programmer pour un fichier fixe ou pour n'importe quel fichier, puisque le nom du fichier sera spécifié dans la commande d'exécution.

Cette seconde est beaucoup plus générale. Lorsque vous voulez utiliser cette option, en tant que paramètre main, vous devez spécifier les mots clés argc et argv comme argument. Ensuite, on ajoutera argc et argv, le premier de type int, et pour le second on utilisera l'expression char * argv [ ], une table d'index pour les chaînes de caractères. Par la suite, la valeur argc pendant le programme sera le nombre d'arguments plus un spécifié dans la commande, tandis que argv [1] fera référence au premier argument, argv [2] le second, etc., obtenant le nom du programme dans argv [0]. Il s'agit d'un programme appelé 4 echo qui répète ce que nous écrivons en ligne de commande lors de l'exécution (si le premier mot est le nom de ce programme, bien sûr).

Programme 4. Programme d'écho.

Scénarios complexes

Dans les programmes écrits en C apparaissent parfois des rapports complexes où il est difficile de savoir ce qu'est la donnée déclarée. Par conséquent, les erreurs décrites dans le troisième programme ne comprennent pas immédiatement l'estimation de la variable.

void (* erreurs [2]) ( )

La principale raison de la difficulté réside dans: * tandis que l'opérateur écrit en avant [ ] et ( ) en arrière, les agents de table et de fonction ont plus de priorité que ceux du démonstrateur, et l'association est de gauche à droite pour des agents [ ] et ( ), mais vice versa pour des indicateurs.

Le plus simple pour compléter la définition est de suivre les règles suivantes:

  • commençant par la gauche et se terminant par le nom.
  • appliquer les règles de préférence à l'envers, traduire:

( ) Un tableau composé de
[ ] ... qui retourne...
* démonstrateur pour...

Par exemple

fer à repasser

X est une table de démonstration pour caractères

et puis,

struct S(* (* (* (* (* x) [ ] ) ( ) [ ] ) [ ] )

Une table de démonstration pour la fonction retournée par le démonstrateur pour la table formée par -structure S est un démonstrateur sur –x

Prototypes de fonctions

Le sixième chapitre traite des concepts liés aux fonctions : définition, gestion et appel. Alors que les paramètres formels sont déterminés dans la définition des fonctions, citant les types correspondants, l'appel de fonctions détermine la valeur instantanée des paramètres, mais des conversions non visibles se produisent, car les nombres très courts sont convertis en ints et les vrais double . Cela entraîne une perte d'efficacité et de plus, il n'y a pas de vérifications dans l'échange de paramètres. Face à cela, certains compilateurs C (selon la norme ANSI C), en plus de mentionner dans la référence fonctionnelle le nom de la fonction et le type de résultat, doivent être définis les types de données des paramètres. Par exemple :

extern void fun1 (int, float, char *);

Programme 5. Utilisation d'un prototype.

est un prototype de fonction qui spécifie le type des trois paramètres sur lesquels la fonction est basée (int, float et char * ). Si nous voulions qu'il n'y ait pas de vérifications dans l'échange de paramètres, nous ferions référence.

Dans le programme 5, on peut observer l'événement d'une erreur de compilation en raison de l'incompatibilité des paramètres.

Gai honi buruzko eduki gehiago

Elhuyarrek garatutako teknologia