title: What does the condition: '*s1 = *s2' do exactly?
body: <p>Consider following code:</p>
  
  <pre><code>void concatenate(char *s1, char *s2){
      while(*s1 != '\0'){
         s1++;
      }
      for (; *s1 = *s2; s1++, s2++){  
      }   
  }
  </code></pre>
  
  <p>In the above function, in for-loop the condition <code>*s1 = *s2</code>  is checked every time. How can this be possible?<br>
  It also assigns the value pointed by <code>s2</code> to the value pointed by <code>s1</code> and what is checked then for the loop to continue?</p>