title: Dereferencing in C
body: <p>I've just started to learn C so please be kind.
  From what I've read so far regarding pointers:</p>
  
  <pre><code>int * test1; //this is a pointer which is basically an address to the process 
               //memory and usually has the size of 2 bytes (not necessarily, I know)
  float test2; //this is an actual value and usually has the size of 4 bytes,
               //being of float type
  test2 = 3.0; //this assigns 3 to `test2`
  </code></pre>
  
  <p>Now, what I don't completely understand:</p>
  
  <pre><code>*test1 = 3; //does this assign 3 at the address 
              //specified by `pointerValue`?
  test1 = 3;  //this says that the pointer is basically pointing 
              //at the 3rd byte in process memory, 
              //which is somehow useless, since anything could be there
  &amp;test1; //this I really don't get, 
          //is it the pointer to the pointer? 
          //Meaning, the address at which the pointer address is kept?
          //Is it of any use?
  </code></pre>
  
  <p>Similarly:</p>
  
  <pre><code>*test2; //does this has any sense?
  &amp;test2; //is this the address at which the 'test2' value is found? 
          //If so, it's a pointer, which means that you can have pointers pointing 
          //both to the heap address space and stack address space. 
          //I ask because I've always been confused by people who speak about 
          //pointers only in the heap context.
  </code></pre>