Я понимаю, что указатель const можно объявить несколькими способами:
const int * intPtr1; // Declares a pointer that cannot be changed.
int * const intPtr2; // Declares a pointer whose contents cannot be changed.
// EDIT: THE ABOVE CLAIMS ARE INCORRECT, PLEASE READ THE ANSWERS.
Но как насчет тех же принципов в контексте аргументов функции?
Я бы предположил, что следующее избыточно:
void someFunc1(const int * arg);
void someFunc2(int * arg);
Так как someFunc 1 и 2 делают pass-by-value для самого указателя, его невозможно, чтобы someFunc1 изменил значение исходного указателя в данном вызове функции. Чтобы проиллюстрировать:
int i = 5;
int * iPtr = &i;
someFunc1(iPtr); // The value of iPtr is copied in and thus cannot be changed by someFunc1.
Если они верны, тогда нет смысла в том, чтобы объявлять какую-либо функцию с аргументом 'const int * ptr' arg, правильно?