Почему вы думаете, что это невозможно? Похоже, вы путаете это с правилом о том, что нельзя возвращать адреса локальных переменных вызывающим функциям. Вы не можете сделать это, потому что переменные, локальные для функции, имеют время жизни только на время вызова этой функции; как только функция вернется, эти переменные станут мусором.
Есть вещи, время жизни которых выходит за пределы времени жизни вызова функции; это нормально, чтобы вернуть им адреса. Примерами этих вещей являются блоки памяти, выделенные в куче (например, с malloc
), или объекты с статической продолжительностью хранения (например, глобальные переменные и строковые литералы).