C++ de conversion de type avec des pointeurs

Je viens d'un milieu de C# et Java et je n'arrive pas à comprendre ce casting avec des pointeurs signifie en C++.

Par exemple:

int x = 1;
char c = *((char*)&x);

Que fait-il? Ce que c'est utile pour?

  • En C++, vous devez éviter de jeter. Le Casting est une façon de dire au compilateur "non, non, vous pensez que c'est mal, mais je suis sûr que j'ai raison". En C++ si c'est toujours mieux de faire le compilateur droit tout le temps. Le Casting est une façon de supprimer les erreurs du compilateur. Donc, fondamentalement, c'est plus constructif à poser au sujet du casting pour un usage particulier, plutôt que de casting en général. Les deux exemples devraient être évités en C++ entièrement.
  • Voulez-vous savoir sur le casting avec des pointeurs en général ou à partir de votre exemple, il peut sembler être la différence entre la coulée de char * et char const * ?
  • J'ai édité le post, maintenant, il devrait être plus clair, je pense.
  • Ni de vos exemples de compilation, de sorte qu'ils ne sont pas significatives.
  • après la modifier le code ne peut pas compiler: doit être char c = *((char*)x);
  • Je veux savoir ce qui est pas dans la variable c par exemple, ce que c'est un moyen de fonte avec le symbole *. Je suis venue à partir d'un fond de c# et java et je ne sais pas si c'est seulement moi, mais j'utilise de la coulée dans ces langues pour la conversion de double, float, et ce genre de choses.
  • vous avez au moins besoin de poster un exemple qui compile, mais même si vous n'avez que cela ne signifie pas qu'il est légal de C++. Parfois en C++, vous avez un pointeur vers un type, mais vraiment, vous savez que c'est un pointeur vers un autre type, si vous le lancez.
  • J'ai édité et je pense que maintenant il doit compiler et d'expliquer ce qui est de la question plus clairement.
  • Où avez-vous trouver le code qui projette avec *s de toute façon?
  • Ce que vos exemples ne il prendre la valeur de l'entier 1, et prétendre que c'est un pointeur. Bien sûr, il est très peu probable que 1 représente un juridique, l'adresse de mémoire, de sorte que tout programme qui a utilisé ce "pointeur" est très probablement un crash assez rapidement.

InformationsquelleAutor UnTraDe | 2012-07-29