Очевидно что это ссылка на указатель.
Ссылка позволяет менять значение переменной вне вызываемой функции. Укатаель, который вы передадите первым параметром функции, будет изменен на newArray.
Ок, а автор видео сказал, что это указатель на ссылку, поэтому я засомневался.
Еще вопрос, что мешает нам просто передать указатель? Я так понял, что ссылка на указатель нужна, чтобы поменять сам указатель, иначе бы у нас при вызове функции с просто указателем создалась бы его копия. Я прав?
Правы. Ссылка позволяет менять исходную переменную, которую вы передаете в качестве параметра. В вашем случае это просто альтернатива указателю на указатель (int **).
Только есть ньюанс. Что бы использовать ** вы должны явно взять адрес указателя перед передачей его в функцию. Со ссылкой это происходит прозрачно (ссылка под капотом это обычный указатель).
Максим Мосейчук, как раз думал о том, почему бы не использовать указатель на указатель вместо ссылки на указатель. Код окончательно всё прояснил. Большое Вам спасибо!