- ベストアンサー
キャストについて
たまに (int*) といった記述を見るのですが、このint*はどういった処理(意味?)をしているのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
例えば、malloc()などでメモリ割り当てした場合、malloc()は、void *(型を指定しないポインタ)を返します。 この戻り値を(int *)を使ってint型のポインタとして扱うことを宣言します。 ポインタの型を指定することによって、ポインタの加算などの演算が正常に(例えば、1加算したときに、int型であればint型のサイズだけポインタを進める、char型であればchar型のサイズだけ進める、double型であればdaouble型のサイズだけ進める、等々)行われます。
その他の回答 (3)
- jacta
- ベストアンサー率26% (845/3158)
回答No.3
Cの場合、void*からint*へは暗黙的に型変換できます。 おそらく、静的解析ツールの警告を黙らせるためといった理由なのでしょう。
- arain
- ベストアンサー率27% (292/1049)
回答No.2
>見た限りではポインタにキャストしているような気もするのですが。。。 malloc()であれば、戻り値は「void *」です。 従って、「void型のポインタ」を適切な変数型のポインタにキャストしています。
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.1
> (int*) > といった記述を見る int *p; p = (int *) malloc(sizeof(int) * n); のような文脈の一部のことですか?
補足
まさにこのような感じです。 見た限りではポインタにキャストしているような気もするのですが。。。