title: Adding pointer addresses - legality
body: <p>Since adding two pointers together is illegal, how is this code snippet valid?</p>
  
  <pre><code>struct key *low = &amp;tab[0]; 
  struct key *high = &amp;tab[n]; 
  struct key *mid; 
  
  while (low &lt; high) 
  { 
    mid = low + (high-low) / 2; //isn't this adding pointers?
  
  
  //code continues...
  </code></pre>
  
  <p>The first statement in the while loop seems to add two addresses together, how is this legal? </p>
  
  <p>This code is from K&amp;Rs the C programming language on page 122</p>