Объясните, пожалуйста, почему не работает tswap.
Я Не понимаю, почему для изменения указателей требуется разыменование как в swap.
#include <stdio.h>
#include <stdlib.h>
void swap ( int* p_first, int* p_second )
{
int tmp = *p_first;
*p_first = *p_second;
*p_second = tmp;
}
void tswap ( int* p_first, int* p_second )
{
int* tmp = p_first;
p_first = p_second;
p_second = tmp;
}
int main ( void )
{
int a = 10,
b = 20,
* pa = &a,
* pb = &b;
printf ( "\na = %d, b = %d", a, b );
swap ( pa, pb );
printf ( "\na = %d, b = %d", a, b );
tswap ( pa, pb );
printf ( "\na = %d, b = %d", a, b );
return EXIT_SUCCESS;
}