title: Why is *p++ different from *p += 1?
body: <p>Consider:</p>
  
  <pre><code>void foo1(char **p) { *p++; }
  void foo2(char **p) { *p += 1; }
  </code></pre>
  
  <p>and</p>
  
  <pre><code>char *s = "abcd";
  char *a = s; 
  foo1(&amp;a); 
  printf("%s", a); //abcd
  </code></pre>
  
  <p>but if I use <code>foo2()</code> instead of: </p>
  
  <pre><code>char *a = s; 
  foo2(&amp;a); 
  printf("%s", a); //bcd
  </code></pre>
  
  <p>Can someone explain it?</p>