• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複雑なキャスト)

複雑なキャストの書き方は?

このQ&Aのポイント
  • (int の要素数3の配列) へのポインタを意味するキャストの書き方を教えてください。
  • コンパイルエラーが発生する理由も教えてください。
  • 先頭要素のポインタを経由して、要素数3の配列へのポインタを表現する書き方が分かりません。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

ああそうそう, 「どう書けばいいか」は, その型の変数が宣言できる人ならわかるはずです. たとえば今の例の「int の大きさ 3 の配列へのポインタ」だったら int (*pai)[3] って書いてるでしょ? そこから識別子の pai を消せばいい. それだけ. typedef 使えばいいのに, って話もあるな.

kc1210yone
質問者

お礼

変数名を抜けばいいだけなんですね ありがとうございます

その他の回答 (3)

回答No.4

因みに、C言語では、配列もポインタも同じ物なので #include<stdio.h> int func(int *pai, int n){ return pai[n]; } int main(){ int ai[] = {0, 1, 2}; int i = func(ai, 1); int *pi = ai; int j = func(pi, 1); printf("Of course %d = %d.\n", i, j); return 0; } で良い。この方がコードが短くなるし速くなる。

kc1210yone
質問者

お礼

ありがとうございます!

回答No.3

int j = func((int*[3])pi, 1); ↓ int j = func((int(*)[3])pi, 1); funcの宣言の所には int func(int (*pai)[3], int n) って感じで「int (*pai)[3]」って書いてあるよね?ここから「変数名のpai」を削って、前後を括弧で括れば「キャスト」になる int (*pai)[3] ↓ int (*)[3] ↓ (int (*)[3])

kc1210yone
質問者

お礼

ただ変数名を抜けばよかったんですね ありがとうございます

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

(int (*)[3])

kc1210yone
質問者

お礼

括弧かー、なるほど!

関連するQ&A