title: Declaration specifiers and declarators
body: <p>With reference to the question <a href="https://stackoverflow.com/questions/13073952/where-in-a-declaration-may-a-storage-class-specifier-be-placed"><strong>Where in a declaration may a storage class specifier be placed?</strong></a> I started analyzing the concept of <code>declaration-specifiers</code> and <code>declarators</code>. Following is the accumulation of my understanding.</p>
  <h3>Declarations</h3>
  <ul>
  <li>Generally, the <code>C</code> declarations follow the syntax of <code>declaration-specifiers declarators;</code></li>
  <li><code>declaration-specifiers</code> comprises of <code>type-specifiers</code> , <code>storage-class-specifiers</code> and <code>type-qualifiers</code></li>
  <li><code>declarators</code> can be variables,pointers,functions and arrays etc..</li>
  </ul>
  <h3>Rules that I assume</h3>
  <ul>
  <li><code>declaration-specifiers</code> can be specified in any order, as an example</li>
  <li>There cannot be more than a single <code>storage-class-specifier</code></li>
  <li>On the other hand there can be multiple <code>type-qualifiers</code></li>
  <li><code>storage-class-specifier</code> shall not go with the <code>declarator</code></li>
  </ul>
  <h3>Questions</h3>
  <p>Q1: In the declaration of a constant pointer, I see a mix of <code>declarator</code> and <code>type-qualifier</code> as below</p>
  <pre><code>const int *const ptr; //Need justification for the mix of declarator and type-specifier
  </code></pre>
  <p>Q2: There can be a pointer to <code>static int</code>. Is there a possibility of providing the pointer a <code>static</code> storage class? Means the pointer being static.</p>