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