Я изо всех сил пытался понять различное поведение при перестановке указателей в C.Если я хочу поменять местами два указателя int
, я могу сделать
void intSwap (int *pa, int *pb){
int temp = *pa;
*pa = *pb;
*pb = temp;
}
Однако, если я хочу поменять местами два указателя char
, мне нужно сделать что-то вроде
void charSwap(char** a, char** b){
char *temp = *a;
*a = *b;
*b = temp;
}
, потому что если я do
void charSwap(char* a, char* b){
char temp = *a;
*a = *b;
*b = temp;
}
компилятор жалуется на выражение * a = * b, поскольку оно не может изменить значения.
Если я хочу поменять местами две строки
(например, char * s1 = "Hello"; char * s2 = "Bye";
), как бы это сделать?
Не могли бы вы помогите мне немного? Я действительно хотел бы узнать, как это работает, чтобы мне не приходилось постоянно сталкиваться с методом проб и ошибок, пока я не получу правильный ответ. Надеюсь, это пригодится многим другим.