title: Array of char pointers
body: <p>I am looking at some code I did not write and wanted help to understand an element of it. The code stores character arrays, creates pointers to these arrays (assigning the pointers the arrays addresses). It looks like it then creates an array to store these characters pointers addresses and I just wanted some clarification on what I am looking at exactly. I also am confused about the use of the double (**) when creating the array. </p>
  
  <p>I have included a stripped down and simplified example of what I am looking at below.   </p>
  
  <pre><code>char eLangAr[20] = "English";
  char fLangAr[20] = "French";
  char gLangAr[20] = "German";
  
  char* eLangPtr = eLangAr;
  char* fLangPtr = fLangAr;
  char* gLangPtr = gLangAr;
  
  
  char **langStrings [3]=
  {
      &amp;eLangPtr,
      &amp;fLangPtr,
      &amp;gLangPtr
  };
  </code></pre>
  
  <p>When using the array they pass it as an argument to a function. </p>
  
  <pre><code>menu (*langStrings[0]);
  </code></pre>
  
  <p>So the idea is that the character array value "English" is passed to the function but I'm having trouble seeing how. They pass the menu function a copy of the value stored in the langStrings function at location 0, which would be the address of eLandPtr? If someone could explain the process in English so I could get my head around it that would be great. It might be just because it has been a long day but its just not straight in my head at all.  </p>