<p>
Napisz funkcję <span class="variable">WymianaWskInt()</span>. 
Parametrami funkcji mają być dwa 
wskaźniki do wskaźników do zmiennych typu <span class="variable">int</span>. 
Zadaniem funkcji jest wymiana 
wartości zmiennych.
Funkcja ma wymienić wskaźniki do zmiennych, a nie wartości zmiennych.
Napisz program, który stosując funkcję 
<span class="variable">WymianaWskInt()</span> 
wymienia wartościami dwie zmienne dynamiczne. 
Wartości wszystkich zmiennych wczytaj z klawiatury. 
Po dokonaniu wymiany wydrukuj wartości zmiennych na ekranie. 
Czy funkcja <span class="variable">WymianaWskInt()</span> 
może zostać użyta do wymiany wartości zmiennych statycznych?
</p>



<p>
Funkcja <span class="variable">WymianaInt()</span> 
z poprzedniego zadania jest identyczna z funkcją:
</p>


<pre>
void zmien(int &amp;p1, int &amp;p2){
  int ptmp;

  ptmp = p1;
  p1   = p2;
  p2   = ptmp;
}
</pre>



<p>
Funkcje te różnią się jedynie nagłówkiem. 
W przypadku, gdy parametry 
<span class="variable">p1</span> oraz 
<span class="variable">p2</span> są 
dużymi strukturami wówczas kopiowanie całych struktur 
może być czasochłonne. 
Wtedy funkcja te jest nieefektywna (niewydajna).
</p>



<p>
Funkcja <span class="variable">WymianaWskInt()</span> 
wymienia jedynie wskaźniki do danych. 
Zatem wymiana danych (bez względu na ich wielkość) 
zawsze będzie równie wydajna. 
Niestety funkcji nie można użyć do zmiennych automatycznych. 
Co więcej, ponieważ wskaźniki są 
faktycznie zmiennymi typu <span class="variable">unsigned long</span>, 
zatem zamiast tej funkcji możemy stosować 
powyższą funkcję <span class="variable">zmien()</span> 
(stosując odpowiednio operator rzutowania). 
Ponadto funkcja <span class="variable">zmien()</span> 
może być użyta do wymiany wskaźników do dowolnego typu.
Ewentualna pułapka polega na tym, że nie w 
każdym kompilatorze C++ wskaźnik musi 
być zgodny z typem <span class="variable">unsigned long</span>.
</p>

