const ポインターと非 const ポインターを比較します。比較は合法ですか?そのような比較のための特別な注意。ありがとう。
質問する
5044 次
2 に答える
10
へのポインターはT
、への const ポインターに暗黙的に変換できますT
。同様に、へのポインターは、T
へのポインターに暗黙的に変換できますconst T
。コンパイラーは、ポインターを const ポインターと比較しようとするときに、必要に応じてこれらの変換のいずれか、または両方を行います。2 つの非 const ポインターまたは 2 つの const ポインターを比較することほど危険なことはありません。
于 2013-02-07T23:56:44.520 に答える
-3
const の目的
const char* p
変更しないことを約束することです。理論的には、非 const ポインターが同じコード内の同じ場所を指すことはありません。これは、適切なコーディングの実践の問題です。実際には、作業が楽になるという理由で何かを const にすることになるかもしれませんが、概念的には真の const ではありません。その場合、比較する必要があるかもしれません。前述のように、使用しているコンパイラとその設定に応じて、このような比較が必要な場合とそうでない場合があります。そうでない場合に備えて、これが気になる場合は、比較する前に非 const へのキャストを強制します。たとえば、次のようになります。
if ((char*)const_p == non_const_p)
于 2013-02-08T00:02:21.170 に答える