title: Do previous declarations in C change how pointers are initialized?
body: <p>How are pointers in C initialized? It seems like previous declarations change how they are initialized. </p>
  
  <p>Consider the following example:</p>
  
  <pre><code>int *a;
  printf("a: %p\n", (void*)a);
  </code></pre>
  
  <p>This code snippet results in</p>
  
  <pre><code>a: (nil)
  </code></pre>
  
  <p>So one could think that variables at function start are initialized with null, but if I execute this code:</p>
  
  <pre><code>int *a;
  for(int i = 0; i &lt; 1; i++){
      int *b;
      printf("a: %p\n", (void*)a);
      printf("b: %p", (void*)b);
  }
  </code></pre>
  
  <p>This is the result:</p>
  
  <pre><code>a: 0x7ffff3bb2e40
  b: (nil)
  </code></pre>
  
  <p>How can I determine how the variables are initialized?</p>