Comment utiliser les arguments de fonction déclarés comme si cela est possible? p> p>
5 Réponses :
Non. Vous devez lui donner un nom. C'est à dire. ou si vous utilisez iostreams: p>
@Alan: varargs.h code> et la syntaxe et support varargs.
@Alan: La question est également applicable à C ou C ++, donc j'ai utilisé la fonction C.
@DMCKEE: Je fais référence à: Parasht.com /c++-faq-lite/input-Output.html#faq-15.1
@Alan: Je sais que, mais cela ne signifie pas que d'autres ne liront pas cela et le trouvera ailleurs.
@Billy: Utilisez % f code> ou
% g code> à imprimerf un double.
J'espère qu'un exemple peut fournir de l'aide:
C'est la meilleure réponse ici. +1.
@ ZED91 - Vous devez marquer la réponse qui vous a aidé à résoudre le problème comme "accepté". Vous pouvez marquer n'importe quelle réponse comme acceptée, quel que soit le score de vote. Il est considéré poli de toujours accepter une réponse à vos questions. Il vous obtiendra également +2 dans la réputation et l'auteur de la réponse +15.
D'autres cas d'utilisation pour cela sont des pointeurs de fonction de passage autour et des modèles.
Le paramètre peut toujours être placé sur la pile, vous pourrez donc la trouver là-bas (voir les commentaires ci-dessous)
pour Exemple em> ( hautement non-non-non portable fort>) p> Je ne sais pas pourquoi vous voudriez faire cela si p> p>
Cela dépend fortement de la mise en œuvre (dépend de la CPU, de l'ABI, etc.).
@Paul R. C'est mon interprétation de la question. Au moins jusqu'à ce que l'OP clarifie. J'ai ajouté une note à ma réponse
noté et -1 enlevé. Vous suggère également s / volonté / mai / code> et
s / peut / peut être capable de / peut pouvoir / code>, car il existe beaucoup d'ABIS qui utilisent des registres pour passer des paramètres de passage.
Les arguments ne sont pas nécessairement passés sur la pile. Plus susceptibles d'être transmis dans un registre, par exemple si l'utilisation de SSE2 FP (assez probable).
Je ne vois pas la valeur dans cela du tout. Nous ne pouvons vraiment rien dire à l'OP sur l'endroit où trouver ces données. S'il a la capacité de le chercher, il a la capacité de donner un nom à l'argument.
Vous ne devriez pas écrire cela sur Internet, cela ne devrait même pas être mentionné. Les gens vont utiliser cela.
compilateur passera 0 par défaut ... C'est la façon dont nous avons l'habitude de distinguer l'opérateur d'incrémentation postfix et nous n'avons jamais à utiliser la valeur réelle passée. P>
Les arguments sans nom ne sont pas liés et non corrélés aux valeurs par défaut. Sauf si la personne qui a déclaré la fonction avec l'argument sans nom l'a également dit à une valeur par défaut à 0, le compilateur ne "passe pas 0 par défaut", et l'appelant peut - et doit - passer à une valeur spécifique, bien qu'on ne soit inutilisable dû pour ne pas avoir un identifiant. Le cas de bord de opérateur ++ code> ou
ou code> est une lacune malheureuse dans la conception qui est maintenant placée dans la pierre, mais elle n'a aucun rapport sur la manière dont toutes les autres arguments sans nom ou par défaut acte.
Voici un bon Lien
void bar(int arg1, int /* Now unnamed */, int arg3) { // code for bar, using arg1 and arg3 }
NON B>. Il suffit d'ajouter un nom pour ne pas casser une déclaration précédente