title: What's the different between *p++,* ++p,++*p in C language pointer?
body: <p>I'm learning the basic knowledge of c programming language. And now I am confused at pointer sections.
  There is the original question in the book:</p>
  
  <p>Array a has some value and pointer p is now at a[1]:</p>
  
  <pre><code>a[0]:10
  a[1]:20  &lt;---p
  a[2]:30
  a[3]:40
  a[4]:50
  </code></pre>
  
  <p><strong>Question List</strong>:</p>
  
  <ol>
  <li>What's the value of <code>*p</code> after executes <code>* p++</code>?</li>
  <li>What's the value of <code>* ++p</code>?</li>
  <li>What's the value of <code>++ * p</code>?</li>
  </ol>
  
  <p>So, What's the different between <code>*p++</code>, <code>* ++p</code>, <code>++*p</code>?</p>
  
  <p>In my opinion:</p>
  
  <ol>
  <li><code>*p++</code> means to move pointer <code>p</code> points the next element, so the 1st answer is 30.</li>
  <li>The difference of <code>*p++</code> and <code>*++p</code> just like the difference of <code>i++</code> and <code>++i</code>. so the 2nd answer is 30.</li>
  <li><code>*p</code> means the value of pointer p, so <code>++*p</code> means to let <code>p</code> value increase 1. So the 3rd answer is 21;</li>
  </ol>
  
  <p>Am i right?</p>