山下
@yamashitam
(struct person *)malloc(sizeof(struct person)) よくわからない人はおまじない程度にとらえていいと思いますが、仕組みとしては(1)sizeof演算子がstruct person型の使うバイト数を整数で取得(続く) #meijimaxc
2010-12-07 14:04:18
山下
@yamashitam
(2)取得した数字をmalloc関数に渡す。malloc関数は、stdlib.hに用意されている、メモリを確保してその先頭アドレス(番地)を返してくれる関数です。(続) #meijimaxc
2010-12-07 14:06:46
山下
@yamashitam
(3)つまりこれを、自分で宣言したポインタ変数(struct person *pとか)に代入するのですが、このままではできません。malloc関数の返り値はvoid *という「どんな型にするかはあとで決めてくれ」という特殊な型です。(続) #meijimaxc
2010-12-07 14:11:21
山下
@yamashitam
なので代入の前にキャストが必要です。キャストとは、C型にキャストしたいものAに対して代入先B(C型)がある場合「B = (C)A」とすることです。今回ではp = (struct person *)malloc...となります。(続く) #meijimaxc
2010-12-07 14:14:01
山下
@yamashitam
mallocの使い方について座学で学習していないようなので、混乱する人が多く見受けられます。ドリルを読んでもわからないという人がいます。というわけでつらつらと書いてみました。 #meijimaxc
2010-12-07 14:17:15