У меня есть проблемы с пониманием вариации среди них:Какая разница в этих указателях?
char* s = "string";
cout<<*s+1;
cout<<(*s)++;
cout<<*s++;
У меня есть проблемы с пониманием вариации среди них:Какая разница в этих указателях?
char* s = "string";
cout<<*s+1;
cout<<(*s)++;
cout<<*s++;
*s+1
оператор добавляет 1 со значением ASCII 1-го элемента строки и печатает его.
И *s
печатает 1-й элемент строки.
ASCII, возможно, нет. Должен сказать: «добавляет 1 с помощью значения единицы кода». Даже если мы предположим, что в кодировке фактического набора символов все кодовые точки являются одним блоком кода, приращение кодовой точки не обязательно приводит к действительной кодовой точке. Например, [Windows-1252] (http://en.wikipedia.org/wiki/Windows-1252) имеет отверстия. –
просто говоря, «строка», расположенная в области ПЗУ, как вы можете их изменить?
Пробовал, скажем, uhhhh, * работает? * –
Я получаю ошибку сегментации. Возможно, потому, что вы изменяете 'const char *'. Первая строка должна читать: 'const char * s =" string ";', а затем вы не можете выполнить '* s ++'. Изменение значения const является неопределенным поведением: http://stackoverflow.com/questions/19372952/modification-a-char-const-string – tillaert