title: Pointer Initialization to Iterate through Array
body: <p>I have a function, where I have 2 void pointers (part of the specification), but I know they are <code>char *</code>. I want to iterate through the char arrays, so I tried to create some pointers to iterate through them. When I do the following, my program doesn't work:</p>
  
  <pre><code>int foo(void const * first, void const * second)
  {
      char const * firstIt = (const char*) first;
      char const * secondIt = (const char*) second;
      ...
  }
  </code></pre>
  
  <p>However, if I do:</p>
  
  <pre><code>int foo(void const * first, void const * second)
  {
      char const * firstIt = *(const char**) first;
      char const * secondIt = *(const char**) second;
      ...
  }
  </code></pre>
  
  <p>What is the difference between the two and why does the second one work? I don't know if I included enough detail, so if more information is needed I'd be happy to provide it.</p>