dポイントプレゼントキャンペーン実施中!

ポインタを宣言するとメモリ上に、ポインタ変数を格納するための領域が確保されます。ポインタ=アドレスというのは大丈夫なのですが、

int *b

のようにどうして、ポインタに型があるのでしょうか?単に変数のアドレスを表示するだけならば型はいらないと思うのですが。

またこのとき宣言された変数は *b ではなくて b であってますよね?

A 回答 (12件中11~12件)

>単に変数のアドレスを表示するだけならば型はいらない


C言語では、型はその型分類によって特徴付けるという
前提があるからです。
# JIS X3010 - 6.2.5 あたり

それぞれの型分類は規約で規定されるか処理系に
依存するかのいづれかとなります。
ポインタにも型分類がないと、関数なのか、
整数なのか配列なのかといったような分類ができないからでしょう。
#ポインタ型については規約に規定されていると思います。

>どうして ポインタに型があるのでしょうか?
そういう細かいところが気になるのでしたら、
C言語やC++の規格書などを一読する事をお勧めします。

>またこのとき宣言された変数は *b ではなくて bであってますよね?
あっていると思います。
# int* 型の d という変数になります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。初心者の自分にはハードルの高い内容ですね。いつかチャレンジしたいと思います。

お礼日時:2008/11/28 20:24

変数のアドレスというものは、表示するためにあるのではなく、使うためにあるのです。


メモリ上に確保されたint変数のアドレスだけ分かっても、どうやって使えばいいかわからないですよね?
そのために、intのアドレスを入れるための変数を作り、そこにアドレスを格納して使うのです。

int bの中にあるアドレスを見に行って、そこにある値を見たり、書いたりって感じです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。残念ながらいまいちよくわかりません。
ではdoubleやcharの型の場合だとintと何が異なるのでしょうか?
メモリ上で確保する領域のサイズは同じはずですよね?

お礼日時:2008/11/28 20:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!