Complex declarations

Here is a great article about how to read complex declarations in C: http://www.codeproject.com/KB/cpp/complex_declarations.aspx

It helped me a lot!

Especially – You should read “The right rule” section. Here quote:

int * (* (*fp1) (int) ) [10];
This can be interpreted as follows:

  1. Start from the variable name ————————– fp1
  2. Nothing to right but ) so go left to find * ————– is a pointer
  3. Jump out of parentheses and encounter (int) ——— to a
    function that takes an int as argument
  4. Go left, find * —————————————- and returns a pointer
  5. Jump put of parentheses, go right and hit [10] ——– to an array of
    10
  6. Go left find * —————————————– pointers to
  7. Go left again, find int ——————————– ints.

Leave a Comment