C言語なら俺に聞け(入門篇) Part 13
レス数が900を超えています。1000を超えると表示できなくなるよ。
0908902
2007/06/12(火) 16:14:24レスありがとうございます。
一応、ポインタはわかってるつもりだったんですが、まだまだだったようです。
「やさしいC」には説明がなくてよくわからないのですが、
ネットで調べた感じだと、おそらく、変数や配列に型があるように、
ポインタにも型みたいな物があるんだと想像してます。
int a;
int *Pt;
これはint型の変数a、と
「int型の数が入る変数を指す”メモリ上のアドレスを格納できるポインタを”宣言している」のであって。
ポインタ(アドレス)自体には型は無く、入るのはアドレスのみ、と考えていたんですが、
どうやらポインタ自体に型のような物があり、「int*」「char*」こんな風に表現してるようです。
いいんですよね?(゜∀゜;
でキャスト式を使って「(char*)Pt」こんな風にすると、ポインタの型が変更できる考えとります。
「ポインタに入るのは番地よって、型が無く、番地であるなら、何でも何時でも入れられる。」
こう考えていたのが間違いだったと考えてます。
str = (char*) malloc(sizeof(char) * (num + 1));
とすると↑は、malloc()関数が「void*」という型のアドレス(ポインタ)を返している(返すと決まっている)。
ポインタstrは「char*型のポインタ」?なのでvoid*型のアドレス(ポインタ)を中に格納できない。
でキャスト式を使って型変換をしている、となって合点がいきます。
これでいいんですよね(゜∀゜;?
麻奈さん説明してくれよー(´Д`;
レス数が900を超えています。1000を超えると表示できなくなるよ。