A static
локальная переменная будет иметь время жизни полной программы. Ссылка на него никогда не станет недействительной.
В противном случае нестатические локальные переменные «исчезнут», как только они выйдут из области видимости (что происходит, когда функция вернется), и вы не сможете получить ссылку на то, чего не существует.
Важное замечание о static
локальных переменных и их инициализации: они инициализируются только один раз при первом вызове функции. Переменная не будет инициализирована при последующих вызовах, но сохранит последнее значение, которое она имела.