title: C: operator -> and *
body: <p>On the following example:</p>
  
  <pre><code>typedef struct {
      const char *description;
      float value;
  } swag;
  
  typedef struct {
      swag *swag;
      const char *sequence;
  } combination;
  
  typedef struct {
      combination numbers;
      const char *make;
  } safe;
  
  int main()
  {
      swag gold = {"GOLD!", 1000000.0};
      combination numbers = {&amp;gold, "6502"};
      safe s = {numbers, "RAMACON250"};
  
      //Correct handling
      printf("Result: %s \n", s.numbers.swag-&gt;description);
  
      //Faulty handling
      // printf("Result: %s \n", s.numbers.(*swag).description);
  
      return 0;
  }
  </code></pre>
  
  <p>the following line is correct in order to receive the <code>"GOLD!"</code> </p>
  
  <pre><code>printf("Result: %s \n", s.numbers.swag-&gt;description);
  </code></pre>
  
  <p>but why the following is not correct as the <code>(*x).y</code> is same as <code>x-&gt;y</code></p>
  
  <pre><code>printf("Result: %s \n", s.numbers.(*swag).description);
  </code></pre>
  
  <p>I receive the following fault during compilation: </p>
  
  <blockquote>
    <p>C:\main.c|26|error: expected identifier before '(' token|)</p>
  </blockquote>