2008年11月17日月曜日

ポインタを含む宣言子の解釈

char *( *(*var)() )[10];
これをどう解釈するかですが、

1. 識別子を探す。この場合はvarのみ。
次に修飾子を展開していく。
2. (*var):varはポインタ。
3. (*var)():関数を指すポインタ。(( ) > *の優先順位)
4. *(*var)():戻り値はポインタ。
5. ( *(*var)() )[10]:ポインタは要素10の配列を指す。([ ] > *の優先順位)
6. *( *(*var)() )[10]:配列の要素はポインタ。
7. char *( *(*var)())[10]:ポインタはchar型を指す。

http://www5d.biglobe.ne.jp/~hetare/tips/pointer.html

0 件のコメント: