«ошибка сегментирования» не является выход, это признак того, что ваша программа разбился.
Это не должно удивлять, потому что строковые литералы - это char*
, а не char***
. Попытка удвоить обезвреживание таких указателей - это неопределенное поведение, поскольку оно переинтерпретирует содержимое строкового литерала как указатель на char
. Это то, что вызывает крушение.
Вы можете изменить свою программу следующим образом, чтобы сделать его законным:
int main() {
char *x = "jjhljlhjlhjl";
char tmp[] = "asddfwerwerw";
char *q = tmp;
*q = *x;
// This will produce an output that should be easy to explain:
printf("x:%s\n",x);
printf("q:%s\n",q);
}
Совет: вы не понимаете указатели. – John3136
OT: 'main()' пропускает 'return;' statement. –
alk