J'ai besoin de passer au pointeur de la fonction sur INT.
Maintenant, si je veux passer 5 je le fais, je le fais comme ceci: Y a-t-il un meilleur moyen de l'écrire plus court? P> Je veux passer des octets qui sont Dans i Int à cette fonction: p>
4 Réponses :
Vous pouvez simplement passer et b à la fonction; Pas besoin d'une variable de pointeur intermédiaire. P>
Une dernière question. Puis-je utiliser (pbyte) & i où int i = 5. fonction nécessitent vraiment un pointeur sur des octets
@HOOCH: Bien sûr. Vous pouvez le faire.
Pourquoi créer une variable de pointeur ?. Pourquoi ne pouvez-vous pas le faire comme ça?.
int b = 5; func(&b)
void f(int *i) { //... } int b = 5; f(&b); is enough!
Il y a quelques anciennes aptrices qui prennent toujours des arguments par le pointeur, même s'ils ne font que lire uniquement les booléens, etc. Je ne le recommande pas - plus pour l'intérêt de l'intérêt - mais si vous voulez aller dans l'ensemble HOG, vous pouvez faire quelque chose de pirateux comme: cruciale, les temporaires sont valides jusqu'à l'appel de la fonction f (...) p> p> < / p>
@HOOCH au lieu de null, vous devriez envisager d'utiliser NullPtr - c'est STD.
Peut-être que je manque quelque chose, mais qu'est-ce qui ne va pas avec faire:
int i = 5; FUNC (& I); code>?
@HOOCH Je sais que c'est "juste" un libellé, mais je crois que c'est important: vous n'en passez pas cinq, ce qui fait est que vous passez adresse d'une variable b> qui a une valeur cinq .
nullptr code> n'est pas encore standard.
@Andreyt on peut dire que c'est plus que certain que ce sera donc il est préférable de commencer à utiliser pour être à jour avec le nouveau STD.
Être "à jour avec le nouveau STD" n'exige pas d'utiliser
nullptr code>. La voie "traditionnelle" ne va nulle part.
@Ille n'est rien que nous puissions faire: je suis d'accord avec @andreyt, et d'ailleurs, étant à jour i> dépend de votre compilateur à jour i> qui ne sera pas vrai pour tous utilisateurs pour différentes raisons.
@Andrey "La manière traditionnelle" est (techniquement) incorrecte (cas spéciale doit être faite pour 0) c'est pourquoi (entre autres raisons) NullPtr a été introduit. Tout compilateur moderne prend en charge Nullptr et si quelqu'un n'utilise pas le compilateur moderne (le Ver le plus à jour) S / Il fait du mauvais service - et ce n'est pas à jour avec une langue. Donc, je suis absolument faible et null, NULL ou NULL ne devait pas être utilisé dans le code moderne. Si vous ne savez pas avec moi, alors vous avez tort. Mais ne m'écoute pas, demandez aux autres.
Il n'y a rien de mal avec "cas spécial pour 0". C'est exactement le même "cas spécial" qui a lieu lorsque vous affectez une valeur à virgule flottante à une variable entière ou inversement. C'est le même "cas spécial" qui a lieu lorsque vous attribuez une valeur de pointeur à une variable code> bool code>. Ce "cas spécial" s'appelle conversion standard i>. Les conversions standard sont et seront toujours présentes dans la langue. TRUE, il y a des problèmes de ne pas avoir une constante constante dédiée pour NULL POINTER (c'est pourquoi nous aurons
nullptr code>), mais l'initialisation d'un pointeur, comme dans l'exemple ci-dessus, n'est pas l'un d'entre eux.
Quant à "demander aux autres" ... je suis "d'autres" :)