next up previous contents
Next: 22.4 メモリの開放 Up: 22. ポインタII Previous: 22.2 標準関数 malloc()

22.3 キャスト

C言語ではこれまで学んできたように自動的な型の変換というものがあります。 例えば、次のプログラムでは、整数 $3$ は、代入時に自動的に実数 $3.0$に 変換されています。
    float x;
    x = 3;
また、整数と実数の四則演算などでも型の自動的な変換が行われました。 このように型を別の型に自動的に変換する機能は便利ですが、時として バグの原因にもなります。そこで、C言語では明示的に型を変換するための 単項演算子が用意されており、一般にこの機能をキャストと呼んでいます。

先の例では、$x$ に代入する前に明示的に $3$$3.0$ に変換して見たのが 次のプログラムです。

    float x;
    x = (float)3;

このように、値や変数の前に (型) を置くことによって、希望の型 に変換出来ます。

    int y = 3;
    float x;
    x = (float)y;

この例では、整数変数 $y$ に入っている値 $3$ を実数にキャストしています が、$y$ の値自体は変化する訳ではない点に注意してください。つまり、 キャストは演算なので、意味的には、 a = - b という式と同じ 意味になっている訳です。

こうしたキャストをどういう場面で使うべきかという事は、色々なプログラム を読む中で実際に習得していくものですが、ここでは malloc()をする 際には積極的に行うべきであるということだけは覚えておきましょう。 何故ならば、malloc()の返り値は void *型であるからです。 つまり、以下のように使うのだと覚えておきましょう。

    /* char 20個のメモリ */
    char * s;
    s = (char *)malloc( sizeof(char) * 20 );



Noriyo Kanayama