Именно по этому примеру -
Первый вариант - из Си. Второй - из Си++. Из за вопросов о трудностях перехода с одного языка на другой а так же совместимости исходного кода - оставили обратную совместимость. Поэтому если пишете на Си++ - используете ссылки. (О, молодец, ссылки ускоряют код!) Если же всю жизнь писали на Си и вас тошнит от модных нововведений - используете указатели. (О, молодец, прям Страуструп в молодости!)
Указатели применяются для доступа к объектам с использованием адресной арифметики. По указателю выделяется динамическая память. По указателю базового класса можно получить доступ к его классам-наследникам. Имя массива – указатель на его первый элемент.