Difference between Function pointer and passing pointers : <h1>I have these codes...</h1>

<pre><code>#include &lt;iostream&gt;
using namespace std;


int * Function (int  a, int  b);


int main() 
{
int a = 2;
int b = 7;
int * x = &amp;a;
int * y = &amp;b;

cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

Function (a , b);
cout &lt;&lt; endl &lt;&lt; endl; 
cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

cout &lt;&lt; endl &lt;&lt; endl; 
cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

Function (a ,  b);
cout &lt;&lt; endl &lt;&lt; endl; 
cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

cout &lt;&lt; endl &lt;&lt; endl; 
cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

system ("PAUSE");
return 0;
}

int * Function (int  a, int  b)
{
    int pom; 
     pom =  a;
     a = b; 
     b = pom;

}
</code></pre>

<h3>This one is Function pointer and  do not change variables. I dont know why, and what exactly means Fucntion pointer. Why is this kind of pointers useful ?</h3>

<h2>Versus</h2>

<pre><code>  #include &lt;iostream&gt;
 using namespace std;


 int  Function (int * a, int * b);


int main() 
{
int a = 2;
int b = 7;
int * x = &amp;a;
int * y = &amp;b;

cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

Function (&amp;a , &amp;b);
cout &lt;&lt; endl &lt;&lt; endl; 
cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

cout &lt;&lt; endl &lt;&lt; endl; 
cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

Function (&amp;a , &amp; b);
cout &lt;&lt; endl &lt;&lt; endl; 
cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

cout &lt;&lt; endl &lt;&lt; endl; 
cout &lt;&lt; a &lt;&lt; "   " &lt;&lt; *x &lt;&lt; endl;
cout &lt;&lt; b &lt;&lt; "   " &lt;&lt; *y &lt;&lt; endl;

system ("PAUSE");
return 0;
}

int  Function (int * a, int * b)
{
    int pom; 
     pom =  *a;
     *a = *b; 
     *b = pom;        
}
</code></pre>

<h3>This is ordinary passing by pointers, this change a variables like books learn. I am interested how to use passing by pointer for expamle arrays.</h3>
