title: In C, can an address of a pointer be 0?
body: <p>I'm reading the solution to a problem in the book <a href="http://www.crackingthecodinginterview.com/" rel="noreferrer">Cracking the Coding interview</a> (Q 1.2). The objective there is to implement a function <code>void revers(char* str)</code> in C that reverses a null terminating string.</p>
  
  <p>The solution code looks something like this:</p>
  
  <pre><code>void reverse(char *str)
  {
     char* end=str;
     char tmp;
     if(str)
     {
         while(*end)
         {
            end++;
         }
         end--;
         //code to reverse
     }
  }
  </code></pre>
  
  <p>Here, <code>str</code> contains an address right? And <code>if(str)</code> will only evaluate to <code>false</code> if <code>str</code> is <code>0</code>, right?</p>
  
  <p>So what I'm saying is, is there no chance that <code>str</code> will contain the address <code>0x0000</code>, thus evaluating <code>if(str)</code> to <code>false</code>?</p>