title: string array declaration in c
body: <p>Difference between these declarations ?</p>
  
  <p>1.</p>
  
  <pre><code>char **strings = {"abc", "bca", "rat", "tar", "far"};
  </code></pre>
  
  <p>2.</p>
  
  <pre><code>char *strings[] = {"abc", "bca", "rat", "tar", "far"};
  </code></pre>
  
  <p>3.</p>
  
  <pre><code>char strings[][] = {"abc", "bca", "rat", "tar", "far"};
  </code></pre>
  
  <p>Only (2) is a valid declaration. What is the difference between these types and why are (1) and (3) not valid?</p>