• ベストアンサー

ポインタの文法

現在自分が勉強している中で、ポインタを宣言値を出力するときの文法は「pa」がポインタだとすると、 int *pa , printf("%p\n",pa) , printf("%d\n",*pa) などですが、sizeof(pa*)は後ろに「*」がついており後ろに「*」がつくときの意味が分かりません。 是非ご教示願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.3

(型名*) :: (char*), (int*), (void*) etc... :: は「ポインタ型」という型を表します。 sizeof(char); がchar型のサイズを返すように sizeof(char*); はcharポインタ型のサイズを返します sizeof(pa*)のpaは変数名ではなく型名になっていませんか?

C_32767
質問者

お礼

ありがとうございます!! 完全に理解できました!!そうだったのですか。 私の勉強しているものでは型名ではなくメンバの名前になっていましたがこれについてもかなり理解が深まりました。本当にありがとうございます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

sizeof(char*) のような場合は、型としてのポインタという指定です。 sizeof でその型に必要なメモリ上のサイズが返されます。

C_32767
質問者

お礼

ご回答ありがとうございました。 型としてのポインタのサイズを評価するという事だったのですね。本当に助かりました。ありがとうございました。

  • iachrfe
  • ベストアンサー率0% (0/2)
回答No.1

sizeof(pa*)のように*を付けたら、ポインタpaが指し示しているものを評価することになります。 typedef struct ss { char a; char b; char c; char d; char e; } xxxxxx; ss aa[123]; ss *paa = aa; printf("%d, %d, %d\n", sizeof(xxxxxx), sizeof(paa), sizeof(*paa));

C_32767
質問者

お礼

ご回答ありがとうございました。 返事が遅くなって申し訳ありませんでした。 *をつけることでポインタを評価するという意味だったのですね!分かりやすいご説明ありがとうございました。

関連するQ&A