Я вроде новичок в использовании указателей на C. Поэтому я пытался привыкнуть к ним. Поэтому я хотел поменять местами первый символ двух строк с помощью указателей. Это то, что я придумал
#include <stdio.h>
void swap_first_char(char *s1, char *s2) {
char temp = *s1;
*s1 = *s2;
*s2 = temp;
}
int main() {
char *str1 = "ASTRING";
char *str2 = "BSTRING";
swap_first_char(str1,str2);
printf("str1 = %s, str2 = ‰s\n", str1, str2);
return 0;
}
Итак, это мое понимание прямо сейчас. str1 и str2 содержат адрес первого символа «ASTRING» и «BSTRING». Поэтому, когда я передаю их в функцию swap_first_char(char*, char*);
, теперь s1 содержит адрес первого символа строки «ASTRING», а s2 содержит адрес первого символа строки «BSTRING». Так что я могу разыменовать их и поменять местами, чтобы поменять местами первый символ обеих строк, верно?
Но я продолжаю получать ошибку сегментации при выполнении этого фрагмента кода. Если кто-то может сказать мне, почему это так, я был бы благодарен. Спасибо ^ _ ^