Por que os ponteiros não são inicializados com NULL por padrão?

Alguém pode explicar por que os ponteiros não são inicializados paraNULL?
Exemplo:

  void test(){
     char *buf;
     if (!buf)
        // whatever
  }

O programa não iria entrar no if porquebuf não é nulo.

Eu gostaria de saber por que, em qual caso precisamos de uma variável com lixo, especialmente os ponteiros que lidam com o lixo na memória?

questionAnswers(15)

yourAnswerToTheQuestion