6
votes

Pointeur à int. C ++

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: XXX

Y a-t-il un meilleur moyen de l'écrire plus court?

Je veux passer des octets qui sont Dans i Int à cette fonction: xxx


10 commentaires

@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); ?


@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 qui a une valeur cinq .


nullptr 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 . 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 dépend de votre compilateur à jour 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 bool . Ce "cas spécial" s'appelle conversion standard . 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 ), 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" :)


4 Réponses :


11
votes

Vous pouvez simplement passer et b à la fonction; Pas besoin d'une variable de pointeur intermédiaire.


2 commentaires

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.



5
votes

Pourquoi créer une variable de pointeur ?. Pourquoi ne pouvez-vous pas le faire comme ça?.

int b = 5;
func(&b)


0 commentaires

4
votes
void f(int *i)
{
  //...
}

int b = 5;
f(&b);
is enough!

0 commentaires

-1
votes

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: xxx

cruciale, les temporaires sont valides jusqu'à l'appel de la fonction f (...) < / p>


0 commentaires