Вы передаете указатель на функцию (например, gets()
), которая записывает данные в область памяти, указанную вашим указателем. В вашем случае у вас есть указатель неинициализированный , который означает, что он указывает на случайную область памяти (где находятся приложения или операционная система). Это приводит к случайным последствиям - от «работы» до ненормального завершения или зависания. Вам необходимо зарезервировать память и назначить указатель на нее, например:
char *ptr = (char*)malloc(256);
gets(ptr);
puts(ptr);
free(ptr);
Рассмотрите возможность использования gets_s()
, который является более безопасным.