title: Null pointer not detected
body: <p>I am new to C++. I expected two pointers that don't point to anything to be detected as null pointers. However this works only with one of them. The physical addresses of those pointers are somewhat different - 0xe00000001 vs 0x0 (this one is properly detected as null pointer).</p>
  
  <p>I've written the following snippet of code:</p>
  
  <pre><code>#include &lt;iostream&gt;
  using namespace std;
  
  struct TNode {
      TNode* Parent;  // Pointer to the parent node
      TNode* Left;  // Pointer to the left child node
      TNode* Right;  // Pointer to the right child node
      int Key;  // Some data
  };
  
  int main() {
      TNode parent;
      parent.Key = 2;
      TNode first;
      first.Key = 1;
      first.Parent = &amp;parent;
      parent.Left = &amp;first;
      cout &lt;&lt; first.Left &lt;&lt; endl; // get 0xe00000001 here
      cout &lt;&lt; first.Right &lt;&lt;endl; // get 0x0
  
      if (first.Right == nullptr) {
          cout &lt;&lt;"rnull"&lt;&lt;endl; // rnull
      }
      if (first.Left == nullptr) {
          cout &lt;&lt;"lnull"&lt;&lt;endl; // nothing
      }
  
     return 0;
  }
  </code></pre>
  
  <p>What is going on here? Basically, I want to find a way to check whether first.Left points to nothing.</p>