配列/ポインターを定義した場合、友人の1人と議論していました。
sometype * p;
型のサイズを知りたい場合は、次を使用する必要があると彼は言いました。
sizeof(sometype)
私は次のものも使用できると言いました:
sizeof(p[0]),
それは同じであるべきです。彼は同意しませんでした。彼の要点は、p
が初期化されていない場合、この使用法がp[0]
問題を引き起こす可能性があるということです。
しかし、私の知る限りでは、 の値を変更または依存する場合にのみ、p[0]
これが有害になります。の値を変更しp[0]
たり使用したりしないためp[0]
、これは完全に理にかなっています。
お互いに説得できないので、誰かこのコンセプトを明確にしてくれませんか。
私はこの質問が役に立たないことを知っており、私を含むほとんどすべての開発者が sizeof(sometype) を使用します:)。しかし、この質問は楽しいものであり、 sizeof(p[0]) が有害になる場合があるかどうかを知りたいと思っています。
=================================
この質問を少し拡張させてください。無関係な値を使用した場合(またはランダムなどと見なされた場合)。常にp[0]
値を取得するために使用できますか?
質問をより明確にするために、初期化されていないポインターの値を変更しない場合、それが指している値を使用するだけで、問題を引き起こさずに常に値を取得できますか?