title: Why aren't pointers initialized with NULL by default?
body: <p>Can someone please explain why pointers aren't initialized to <code>NULL</code>?<br>
  Example:</p>
  
  <pre><code>  void test(){
       char *buf;
       if (!buf)
          // whatever
    }
  </code></pre>
  
  <p>The program wouldn't step inside the if because <code>buf</code> is not null.</p>
  
  <p>I would like to know why, in what case do we need a variable with trash on, specially pointers addressing the trash on the memory?</p>