void printCharacters( const char *sPtr) // char string[] = "anything"
{
while (*sPtr != '\0') {
cout << *sPtr;
*sPtr++; //работает ! (изменяет исходную строку)
//++*sPtr; неработает !(l-value specifies const object)
++sPtr;
}
cout << endl;
}
Здравствуйте Oleg_Kovalev, Вы писали:
OK>void printCharacters( const char *sPtr) // char string[] = "anything"
OK>{
OK> while (*sPtr != '\0') {
OK> cout << *sPtr;
OK> *sPtr++; //работает ! (изменяет исходную строку)
OK> //++*sPtr; неработает !(l-value specifies const object)
OK> ++sPtr;
OK> }
OK> cout << endl;
OK>
OK>} :???:
В строке
*sPtr++; //работает ! (изменяет исходную строку)
сначала разыменовывает указатель (результат не используется), а потом инкрементирует этот же
указатель . Т.е. данные ни в коем случае не меняются. При такой реализации printCharacters будет печатать все нечетные символы исходной строки
Напиши так:
(*sPtr)++;
и получишь l-value specifies const object
Здравствуйте Аноним, Вы писали:
А>спасибо за нормальный ответ а не насмешку.
Мне жаль, если мой ответ был воспринят как насмешка. Я не имел этого в виду. Просто, когда я нервничаю, начинаю шутить направо и налево и все невпопад

.
Здравствуйте achp, Вы писали:
A>Мне жаль, если мой ответ был воспринят как насмешка. Я не имел этого в виду. Просто, когда я нервничаю, начинаю шутить направо и налево и все невпопад
.
Нет нет, я какраз рассценил ваш ответ как нормальный а не как насмешку...