複雑なキャスト
"(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;
}
お礼
勘違いしていました。 考えてみたところ、キャスト演算子が単項演算子だと言うことで納得がいきました。 回答ありがとうございました!