• ベストアンサー

キャストについて

たまに (int*) といった記述を見るのですが、このint*はどういった処理(意味?)をしているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kb-nike
  • ベストアンサー率36% (72/200)
回答No.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% (2126/6288)
回答No.1

> (int*) > といった記述を見る int *p; p = (int *) malloc(sizeof(int) * n); のような文脈の一部のことですか?

komehara12
質問者

補足

まさにこのような感じです。 見た限りではポインタにキャストしているような気もするのですが。。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複雑なキャスト

    "(int の要素数3の配列) へのポインタ" を意味するキャストはどのような書き方になりますか? (int*[3]) かと思ったのですが、コンパイルエラーになります。 参考までに、ソースをのせておきます。 pai や ai のようなよくわからない変数名は、 型が複雑なためそこだけハンガリアン記法っぽく書いています。 #include<stdio.h> // func は int の要素数3の配列 {0, 1, 2} の中の n 番目の要素を返す int func(int (*pai)[3], int n){ // pai means 'p'ointer to 'a'rray of 'i'nt. return (*pai)[n]; } int main(){ int ai[] = {0, 1, 2}; // ai means array of int. int i = func(&ai, 1); // 同じことを、先頭要素のポインタを経由してやりたい int *pi = &ai[0]; // pi means pointer to int. int j = func((int*[3])pi, 1); // "(int の要素数3の配列) へのポインタ" を // 意味するキャストがしたい // (int*[3]) ではエラーになる printf("Of course %d = %d.\n", i, j); return 0; }

  • C キャスト方法を教えてください

    C言語の初心者なのですが、 int abc(int(*read)(void*, int, int), int size, char* data); ような関数で第1引数の値をキャストするときどうすればよいですか。   int read = (????)NULL; そもそもint(*read)(void*, int, int)ってどういう意味ですか?

  • キャスト

    double i; for(i = 1.0; (int)i<=10; i+=0.1){ printf("%lf %d\n",i,(int)i); } 上のようなソースで 1.0 から 10.9 まで 0.1 刻みで小数を表示しようとしたのですが、 条件式 (int)i<=10 にも関わらず出力結果に 11.0 が含まれてしまうのは何故でしょうか。

  • キャストがうまくいきません。

    unsigned char *a; unsigened int *b; unsigened int Ui; . . . y = yy*Size; x = Xstart; Ui = (unsigned int)*(a+x+y); *b =Ui; . . 要するにバイトデータをワードデータ領域に転送したいだけなのですが、上記のプログラミングでうまく転送されていない時に予想できる原因は何でしょう? 32ビットマシン、バイトアドレスです。

  • !とキャスト

    チェックボックスがチェックされてないなら intのiに0以外を入れたいのですが、 i = !SendMessage(hchk, BM_GETCHECK, 0, 0); のように書けばいいですよね? Win32のC++ですがCのタイプの平凡なキャストを使うとして i = (int)!((BOOL)SendMessage(hchk, BM_GETCHECK, 0, 0)); こうすればよいソースになったつもりですが、どうですか?

  • コンストラクタ

    恐れ入ります。 たとえばSample classを定義するとして class Sample{ int a=0; int b=0; Sample(){ //まあ、この場合は通常省略ですが。 } } とコンストラクタの前に処理を書く場合と、 class Sample{    Sample(){ int a=0; int b=0; } とコンストラクタに書く場合とでは何か違いがあるのでしょうか?本を見ると「コンストラクタはインスタンスが生成されたときに呼び出される処理」とありますが、上のような記述でも「生成されたときに処理」されますよね・・・? インスタンスを生成するときに引数を使う場合には違いはわかるのですが・・・? 引数がない場合には「コンストラクタには意味はない」であっていますか?

    • ベストアンサー
    • Java
  • アドレス型へのキャストはなぜ

    アドレスのキャストはなぜ (int &)&a; ではなく &(int &)a; としなくてはいけないんでしょうか? 色々と調べてみてもわからず・・・。回答よろしくお願いします。

  • C#のキャスト?

    C#でのキャスト(?)で困ってます。 うまく説明できないので、下にCっぽい処理を書きます。 struct _hoge{   int i;   char c[4];   double d; }; void f(){   BYTE data[16];   stream.read(data);  // 何かから16Byte読み込み   _hoge *st = (_hoge*)data; // ←ここ   TRACE("%d,%c,%f",data->i,data->c[0],data->d); } //(結構いいかげんです) 上記処理のように、BYTEの配列で取得したデータを「struct _hoge」の型にキャストしてそれぞれの要素を取り出す、ということをC#で実現したいのですがMSDNやWebを結構探したのですがわかりませんでした。(何で検索していいのかがわかりませんでした・・・) 実現方法(もしくは検索キーワード)がわかる方、教えてください。

  • キャスト演算子について

    初心者の初歩的な質問ですが、変数の型を変換するキャスト演算子がありますが本を読んでいて思ったのですが変換した式の型はその後どうなるのでしょう? 例で(前略) ----------------------------   int A =0; /*A=0*/ double B =2; /*B=2.000000*/ A = (int)B; B = 3; ----------------------------- とするとA=2 となりますがこの時のBの型はどうなるのでしょう? キャストを使用すると最初に宣言したdoubleがintになってしまうのか?後で代入した3は最初に宣言したdouble型の「3.000000」?それとも変換したint型「3」? 多分最初のままのような気はしますが。よろしくお願いします。

  • 構造体のメモリ確保のキャストについて

    構造体のメモリ確保をする際に、処理系はVC++ 6.0なので キャストしなければならないのですがどうすればよいか分かりません。 構造体にはint型とchar型が入っているのですがこの場合はどのようにキャストすればよいのでしょうか? お願いします。

このQ&Aのポイント
  • 新人の園児バス添乗員の不安について解説します。保護者からの伝言やバスでの気になることを伝える役割を担っているが、忘れたり不安になったりすることがあります。命に関わる重要な情報は保護者が直接園に連絡することが多いですが、新人の不安からくる心配や強迫性障害についても触れます。相談や対策についてもご紹介します。
  • 園児バス添乗員の新人が抱える不安とは?保護者からの伝言や気になることの伝達を担当するが、忘れたり不安になったりすることがあります。命に関わるような情報は保護者が直接園に電話するケースが多いですが、新人の不安心情や強迫性障害についても言及します。解決策にも触れ、相談や対策のサポート方法をご紹介します。
  • 園児バス添乗員の新人の不安について解説します。保護者からの伝言や気になることを伝える役割を果たしていますが、不安や記憶の曖昧さから心配になってしまうこともあります。命に関わるような情報は保護者が直接園に連絡することが多いですが、新人の不安や強迫性障害についても考察します。解決策や相談の方法もご紹介します。
回答を見る