Я пытаюсь понять различное поведение при переключении указателей на 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;
}
потому что если я делаю
void charSwap(char* a, char* b){
char temp = *a;
*a = *b;
*b = temp;
}
компилятор жалуется на выражение * a = * b, поскольку он не может изменить значения.
Если я хочу поменять два strings
(т.е. char* s1= "Hello"; char* s2="Bye";
), как это сделать?
Не могли бы вы мне немного помочь? Я хотел бы узнать, как это работает, поэтому я не буду испытывать проб и ошибок все время, пока не получу правильный ответ. Надеюсь, это полезно для многих других людей.