11
votes

Pourquoi le prototype de fonction est-il à l'intérieur d'un bloc de fonction différent?

J'essaie de comprendre c, en passant par K & R. J'ai de la difficulté à comprendre ce code pour deux fonctions trouvées dans le livre: xxx

Ces deux fonctions effectuent un traputaire sur un tableau donné. Dans la fonction principale, j'ai créé un tableau Int et appelé QSort. Il a bien compilé et courut bien. Ma question est de savoir pourquoi le prototype prototype pour swap () placez-le dans la fonction qsort () et pas avant principale ()?


1 commentaires

Cela peut être fait dans les deux sens. Je suppose que cela se fait pour mettre le prototype dans une portée, pas que cela compte.


3 Réponses :


5
votes

Vous écrivez un prototype de fonction de sorte que le compilateur sache que la fonction existe et peut l'utiliser. Swap () est utilisé à l'intérieur Qsort () , il doit donc apparaître avant la ligne utilisée. Dans ce cas, le prototype Swap () est déclaré à l'intérieur de la fonction qsort () , mais cela pourrait aussi bien être déclaré avant la fonction elle-même. Ou vous pouvez définir swap () avant qsort () et retirer le prototype.


0 commentaires

5
votes

Le prototype doit être ajouté avant que la fonction réelle soit utilisée pour la première fois. Dans ce cas, je ne pense pas que c'est une pratique générale d'avoir un prototype dans Qsort () , cependant, cela sert toujours le but. Le prototype de swap () pourrait également être ajouté avant principal () aussi, ne pensez pas que cela fera une différence.


1 commentaires

Ceci est une erreur. Le prototype de Swap () pourrait ajouter pas non dans Main () , car il doit être déclaré avant qu'il soit utilisé dans Qsort ( ) . C'est un endroit étrange pour mettre le prototype, mais le seul autre endroit qu'il pourrait être légalement mis aurait avant Swap () .



1
votes

placer des prototypes de fonction dans les définitions d'autres fonctions applique le principe de moins de privilège en limitant les appels de fonction appropriés aux fonctions dans lesquelles les prototypes apparaissent.


0 commentaires