title: Can we call (void *)0 a void pointer in C?
body: <p>Summarizing the C standard, specifically <a href="https://port70.net/%7Ensz/c/c11/n1570.html#6.3.2.3p3" rel="nofollow noreferrer">ISO/IEC 9899:201x §6.3.2.3 - 3</a>:</p>
  <p>If a pointer is being compared to the constant literal <code>0</code>, then this is a check to see if the pointer is a <em>null pointer</em>. This <code>0</code> is then referred to as a <em>null pointer constant</em>. The C standard defines that <code>0</code> cast to the type <code>void *</code> is both a null pointer and a null pointer constant.</p>
  <p>Now if we look at <code>(void *)0</code> it is an address(illegal in this context) that is pointing to <code>void</code>.</p>
  <p>Normally we can cast such an address to any appropriate pointer datatype and dereference it but here even after casting it to some other pointer type it is illegal to dereference it.</p>
  <p>So my doubt is:</p>
  <p>Can we call <code>(void *)0</code> as a void pointer looking the way it is defined?</p>
  <p>Also see the below code:</p>
  <pre><code>void *pointer = NULL;
  </code></pre>
  <p>What will I call it now? A void pointer, a null pointer or a null void pointer?</p>