浮動小数点変数を整数値に割り当てるときなど、浮動小数点ポインタが整数を指しているときに暗黙の変換が行われないのはなぜですか?暗黙的な変換とポインタ?
0
A
答えて
1
ポインタはどこかを指し示す必要があるため、それがポインタなのですから。あなたはそれを間接参照
int *p;
そして、あなたが持っている場合は、のような、例えば:
foo(*p);
あなたはポインタデリファレンスを期待してint
で終わります。
float *q;
を、引数のために、あなたがこれを行うことができ、のは言わせて:あなたはfloat
で始まる場合
は今、
int *p=q;
その後、まさにあなたはこのポインタを期待していない場所今、ポイントするには? q
が指しているところを指すことはできません。そこの唯一のものはfloat
です。
だから、あなたは手動で、それを自分で行う必要があります:
int n= (int)*q;
int *p= &n;
をそして、もちろん、あなたがn
は限りp
ポインタが間接参照されますようスコープに残っていることを確認する必要があります。また、*q
を別の値に変更しても、p
が指しているものには影響しません。しかし、それらは異なる質問になるでしょう...
2
私はそれはアレゴリーを介してそれについて考えるのは簡単だと思います。
ポインタが書かれた家の住所を持つ紙切れと考えてください。データのタイプは、その家に住んでいる人の名前です。
今、ポインタをキャストすることは、住所を同じ(大部分)に保ちながら、家に住んでいると思われる人の名前を変更することと同じです。
紙の名前を「アリス」から「ボブ」に変更しただけで、アリスが魔法のようにボブになるわけではありません。紙は家に影響しません。
そのようなポインタを使用すると、定義されていない動作が発生します。コードは、それが実際にはアリスだとボブに対処していると思う。
関連する問題
- 1. レシーバの暗黙的なポインタ変換が機能しない
- 2. 暗黙的な変換と暗黙のクラス
- 3. プライベート継承と暗黙的な変換
- 4. DateTimeから暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙変換に変換することができません
- 5. Scalaのシンプルな暗黙的な変換
- 6. 暗黙的に変換するときに暗黙のany2stringaddシンボル
- 7. C++の暗黙的な変換
- 8. テンプレート関数の暗黙的な変換
- 9. 暗黙的な変換:非参照
- 10. シーケンス内の暗黙的な変換
- 11. ARCを使った間接的なポインタから目的関数のポインタへの暗黙的な変換
- 12. 暗黙的に暗黙的に符号なしタイプに変換される
- 13. 暗黙の変換とオペレータ
- 14. なぜこのクラスは暗黙的にポインタに変換されませんか?
- 15. 暗黙の変換
- 16. 暗黙の変換
- 17. Scalaの暗黙的な変換と暗黙的なパラメータの関係は何ですか?
- 18. スカラーの汎用的な引数の暗黙的な変換
- 19. 一般的な形質の暗黙的な変換
- 20. 値のクラスを持つ暗黙的な変換とmkNumericOpsのスキャレート
- 21. にhas_many関係の暗黙的な変換エラーにとレールバージョン
- 22. RWCStringとconst charの間の暗黙的な変換*
- 23. ジェネリック型と暗黙的な変換でのリフレクションの使用
- 24. IConvertible Vs.暗黙的/明示的な演算子型変換?
- 25. オペレータfloat()とfloat()constを静的メンバーで暗黙的に変換
- 26. IdentityServer3の暗黙的なフローではなく、暗黙的なjavascript
- 27. 予期しない暗黙的な変換
- 28. MessageVerifierのStringへのnilの暗黙的な変換なし
- 29. ArrayからString-Railsへの暗黙的な変換なし
- 30. スカラ暗黙の変換
ニース。おそらく、それをさまざまな種類のもの、つまり電話番号とMACアドレスを表す数字と考えることができます。 – juanchopanza