Thinking in C++ 裡 作者介紹了一個簡單的方法來解讀複雜的定義式, 稱為right-left guideline. 簡單的說就是從中間的變量名開始, 按右-左-右-左…的順序來讀. 以這個題目為例:
char (*(*x())[])()
從x開始:
1.向右看到(), x是一個函數定義, 沒有參數;
2.向左看到*, x的傳回值是指針;
3.向右看到[], 指針指向數組;
4.向左看到*, 數組的元素也是指針;
5.向右看到(), 指針指向的是函數, 即函數指針, 而且函數沒有參數.
6.向左看到char, 函數的傳回值是char.
是以, x是一個沒有參數的函數, 它的傳回值是指向一個數組的指針, 而這個數組的元素是函數指針, 指向的函數沒有參數, 且傳回char.