- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複雑なキャスト)
複雑なキャストの書き方は?
このQ&Aのポイント
- (int の要素数3の配列) へのポインタを意味するキャストの書き方を教えてください。
- コンパイルエラーが発生する理由も教えてください。
- 先頭要素のポインタを経由して、要素数3の配列へのポインタを表現する書き方が分かりません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ああそうそう, 「どう書けばいいか」は, その型の変数が宣言できる人ならわかるはずです. たとえば今の例の「int の大きさ 3 の配列へのポインタ」だったら int (*pai)[3] って書いてるでしょ? そこから識別子の pai を消せばいい. それだけ. typedef 使えばいいのに, って話もあるな.
その他の回答 (3)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
回答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; } で良い。この方がコードが短くなるし速くなる。
質問者
お礼
ありがとうございます!
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
回答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])
質問者
お礼
ただ変数名を抜けばよかったんですね ありがとうございます
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
(int (*)[3])
質問者
お礼
括弧かー、なるほど!
お礼
変数名を抜けばいいだけなんですね ありがとうございます