Можно ли сделать это без объявления глобальной переменной, как в примере ниже?
Да, разумеется, как показано в другом ответе.
Но не стоит огульно объявлять все глобальные переменные unappealing, у них есть свои применения.
Помните также, что C поддерживает область видимости модуля: внутри модуля объект доступен, а снаружи не виден. Такие переменные тоже заслуживают рассмотрения.
Поэтому следующий вариант вполне разумен:
#include <stdio.h>
static char entry[12]; // Module scope is fine
static char *read_entry() {
scanf("%s",entry);
return entry;
}
int main(void) {
printf("%s",read_entry());
}
Переведено с английского·Показать оригинал
Can this work without declaring an global variable like the one below?
Yes, certainly, as demonstrated by the other response.
Still, don't dismiss every global variable as unappealing, because they do have uses.
Remember also that C supports module scope, where something can be accessed inside its module but isn't exposed outside it. Those variables deserve consideration too.
This, therefore, is entirely reasonable:
#include <stdio.h>
static char entry[12]; // Module scope is fine
static char *read_entry() {
scanf("%s",entry);
return entry;
}
int main(void) {
printf("%s",read_entry());
}