- ベストアンサー
ポインタの文法
現在自分が勉強している中で、ポインタを宣言値を出力するときの文法は「pa」がポインタだとすると、 int *pa , printf("%p\n",pa) , printf("%d\n",*pa) などですが、sizeof(pa*)は後ろに「*」がついており後ろに「*」がつくときの意味が分かりません。 是非ご教示願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(型名*) :: (char*), (int*), (void*) etc... :: は「ポインタ型」という型を表します。 sizeof(char); がchar型のサイズを返すように sizeof(char*); はcharポインタ型のサイズを返します sizeof(pa*)のpaは変数名ではなく型名になっていませんか?
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
sizeof(char*) のような場合は、型としてのポインタという指定です。 sizeof でその型に必要なメモリ上のサイズが返されます。
お礼
ご回答ありがとうございました。 型としてのポインタのサイズを評価するという事だったのですね。本当に助かりました。ありがとうございました。
- iachrfe
- ベストアンサー率0% (0/2)
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));
お礼
ご回答ありがとうございました。 返事が遅くなって申し訳ありませんでした。 *をつけることでポインタを評価するという意味だったのですね!分かりやすいご説明ありがとうございました。
お礼
ありがとうございます!! 完全に理解できました!!そうだったのですか。 私の勉強しているものでは型名ではなくメンバの名前になっていましたがこれについてもかなり理解が深まりました。本当にありがとうございます。