title: Why do we use "&" before the integer variable when initializing a pointer that points to the integer?
body: <p>I am currently learning pointers in C. I feel confused about the initialization of a pointer. I might be asking silly questions, but I just want to make sure I understand and learn things right.</p>
  
  <p>So, to initialize a pointer:</p>
  
  <pre><code>int a = 3;
  int *pointer = &amp;a;
  *pointer = 10;
  </code></pre>
  
  <p>OR</p>
  
  <pre><code>int a = 3;
  int *pointer;
  pointer = &amp;a;
  *pointer = 10;
  </code></pre>
  
  <p>So far, I knew that <strong>" * "</strong> declares a pointer type. </p>
  
  <p><strong>*pointer</strong>    is the value of whatever value in the address that the pointer points to. </p>
  
  <p><strong>&amp;</strong>    is the memory address of something.</p>
  
  <p>I can understand 'pointer = &amp;a' in the second case. </p>
  
  <p>But, why do we set *pointer = &amp;a in the first case above since <strong>*pointer</strong> represents the value in that address? </p>
  
  <p>Why do we make the value in that pointer equals to the address of the variable in the first case when initializing the pointer?</p>