typedef char* ptr;
  const ptr p;
これは本当です:
- p定数文字を指します。また
- pは定数で、文字を指します。
理由を説明してください
typedef char* ptr;
const ptr p;
後者の行は次と同等です
char * const p;
ieへpのconstポインタcharです。は型のtypedef新しい名前を導入します。これはテキストによる置換ではありません。
まず、式から typedef を少し取り出してみましょう。
const char *p両方とも、constデータへの非 constポインターとしてchar const *p宣言します。さまざまなものを指すように割り当てることはできますが、指している対象を変更することはできません。pp
char * const p非 constデータへのconstポインターpとして宣言します。別のオブジェクトを指すように変更することはできませんが、指している物を変更することはできます。pp
const char * const pどちらもconstデータへのconstポインターとしてchar const * const p宣言します。それはかなり自明のはずです。p
はtypedef少し直感的ではありません。ptrは の同義語でchar *あるため、const ptrとして機能しchar * constます。修飾子は、const型ではなくポインター型に適用されていますchar。