4
  typedef char* ptr;
  const ptr p;

これは本当です:

  • p定数文字を指します。また
  • pは定数で、文字を指します。

理由を説明してください

4

2 に答える 2

8
typedef char* ptr;
const ptr p;

後者の行は次と同等です

char * const p;

ieへpconstポインタcharです。は型のtypedef新しい名前を導入します。これはテキストによる置換ではありません。

于 2012-07-23T19:35:28.120 に答える
5

まず、式から 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

于 2012-07-23T19:41:56.370 に答える