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: 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 fort> pour swap () placez-le dans la fonction qsort () et pas avant principale ()? P> p> p>
3 Réponses :
Vous écrivez un prototype de fonction de sorte que le compilateur sache que la fonction existe et peut l'utiliser. Swap () CODE> est utilisé à l'intérieur Qsort () CODE>, il doit donc apparaître avant la ligne utilisée. Dans ce cas, le prototype Swap () code> est déclaré à l'intérieur de la fonction qsort () code>, mais cela pourrait aussi bien être déclaré avant la fonction elle-même. Ou vous pouvez définir swap () code> avant qsort () code> et retirer le prototype. P>
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 () Code>, cependant, cela sert toujours le but. Le prototype de swap () code> pourrait également être ajouté avant principal () code> aussi, ne pensez pas que cela fera une différence. P>
Ceci est une erreur. Le prototype de Swap () code> pourrait ajouter pas b> non b> dans Main () code>, car il doit être déclaré avant qu'il soit utilisé dans Qsort ( ) code>. C'est un endroit étrange pour mettre le prototype, mais le seul autre endroit qu'il pourrait être légalement mis aurait avant Swap () code>.
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. P>
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.