title: What does *(int *) mean in C
body: <pre><code>#define value1 *(int*)46
  </code></pre>
  
  <p>I came across a similar statement in an header file for address definitions of interrupts(registers) and peripherals for a microcontroller .</p>
  
  <p>How I interpret it?</p>
  
  <p>We are making 46 a pointer type by typecasting it and using * operator to extract value from it.So the value at location 46 must be stored in value1.</p>
  
  <p>What happens?</p>
  
  <pre><code>printf("%d",&amp;value1)
  </code></pre>
  
  <p>This returns the address of x as 46.</p>
  
  <pre><code>printf("%d",value1)
  </code></pre>
  
  <p>This gives runtime error.Runtime error also results when we try to access the values of x.</p>
  
  <p>Following are my questions:</p>
  
  <ol>
  <li><p>What exactly is <code>*(int *)46</code> mean?</p></li>
  <li><p>What is value1? An integer pointer or an integer</p></li>
  </ol>
  
  <p>Any more info and extra comments about this or any other way to use pointers is most welcome for a beginner like me.
  Thank You in advance.</p>