title: Pointer difference
body: <p>I'm studying pointers in Obj-C. Consider following code:</p>
  
  <pre><code>char c = 'Q';
  char *charPtr;
  charPtr = &amp;c;
  </code></pre>
  
  <p>In the second line, we create a pointer variable of type char and name it <code>charPtr</code>. In my understanding, that is just pointer to memory address that contain some value of type <code>char</code>.</p>
  
  <p>In the third line, we assign <code>charPtr</code> value (memory address) to another memory address that contain value <code>c</code>. </p>
  
  <p>My question is, what is the difference between <code>charPtr</code> and *<code>charPtr</code>? </p>
  
  <p>When I wrote <code>*charPtr = &amp;c</code> there is an "yellow" warning - <code>Incompatible pointer to integer conversion assigning to 'char' from 'char *'; remove &amp;</code></p>
  
  <p>App crash if launched (<code>exc_bad_access</code>)</p>
  
  <p>When I wrote <code>**charPtr = &amp;c;</code> compiler warn me with error : <code>Indirection requires pointer operand ('int' invalid)</code></p>
  
  <p>Summary, I want to know difference between <code>charPtr</code> and <code>*charPtr</code>, and what is <code>**charPtr</code> (2 asterisks).</p>