title: Difference between returning address and returning pointer
body: <pre><code>#include &lt;stdio.h&gt;
  #include &lt;conio.h&gt;
  
  void main()
  {
  
    int m = 20;
    int n = 30;
    int *x = (int *)m;
    int *y = (int *)n;
  
    printf("%d", y-x);   //Output is 5
  }
  </code></pre>
  
  <p>How is the output 5? One of the reason could be that x and y consider 20 and 30 as address and during pointer arithmetic the value could be (30-20)/(size of int) which is 10/2 = 5.</p>
  
  <p>My doubt is what is the difference between returning pointer and returning address ? Why the address of m was not stored in pointer variable x?</p>