title: How do some C functions accept null parameters?
body: <p>I always thought that C does not accept NULL parameters, until I started learning about pointers. In some programming languages, like python for one, it is possible to pass a NULL parameter as an argument, but in C I always thought this would result in <em>Undefined Behaviour</em>.</p>
  
  <p>My question is just one of curiosity, how can a function, such as this...</p>
  
  <pre><code>waitpid(child_pid, &amp;status, options);  //pointer &amp;status
  </code></pre>
  
  <p>...accept a NULL pointer as parameter without running into <em>Undefined Behaviour</em>, don't NULL pointers simply point to nothing?</p>
  
  <p>Simply put, why is this acceptable in C?</p>