title: Pointer type casting to different data type
body: <p>what does <code>(float*)</code> specially do in case of g. If I write <code>g = *&amp;i;</code>  then the ouptut is normal i.e. g=f, but if  <code>g = *(float*)&amp;i;</code> then why is g=0.0000??? </p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  int main()
  {
  
  int i = 37;
  int *p;
  p = &amp;i;
  float f = i;
  printf("%d\n", i);
  printf("%d\n", p);
  printf("%d\n", *p);
  float g = *(float*) &amp;i;
  printf("i = %d   f = %f   g = %f", i, f, g);
  }
  </code></pre>