title: struct without typedef keyword
body: <p>I am currently learning about the <code>struct</code> data structure in C and how it is possible to preface this structure with the <code>typedef</code> keyword. This causes the variable names of the actual structure to be placed in different namespaces as explained in several different references:</p>
  
  <p><a href="https://stackoverflow.com/questions/612328/difference-between-struct-and-typedef-struct-in-c">Difference between &#39;struct&#39; and &#39;typedef struct&#39; in C++?</a></p>
  
  <p><a href="https://stackoverflow.com/questions/1675351/typedef-struct-vs-struct-definitions">typedef struct vs struct definitions</a></p>
  
  <p>However, it is unclear as to what is occurring with the example that I am working with:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  struct demo
  {
      short low_pass_vcf;
      short filter_coupler;
      short reverb;
      short sequential;
  } synth;
  
  int main() 
  {    
      printf("Size of struct: %i\n", sizeof(struct demo));
      printf("Size of struct: %i\n", sizeof(synth));
      return 0;
  }
  </code></pre>
  
  <p>In this example, I am able to access the <code>struct</code> data structure through the <code>synth</code> variable name; however, in the examples that I have seen, in order for me to be able to do this the <code>struct</code> needs to be prefaced with <code>typedef</code>. In this example, <code>typedef</code> is not used and yet I am still able to reference this structure through <code>synth</code>. I am wondering what exactly is occurring that C is allowing me to do this? Any explanation would be appreciated. Cheers.</p>