2014-09-18 4 views
-5

У меня есть проблемы с пониманием вариации среди них:Какая разница в этих указателях?

char* s = "string"; 

cout<<*s+1; 
cout<<(*s)++; 

cout<<*s++; 
+0

Пробовал, скажем, uhhhh, * работает? * –

+0

Я получаю ошибку сегментации. Возможно, потому, что вы изменяете 'const char *'. Первая строка должна читать: 'const char * s =" string ";', а затем вы не можете выполнить '* s ++'. Изменение значения const является неопределенным поведением: http://stackoverflow.com/questions/19372952/modification-a-char-const-string – tillaert

ответ

0

*s+1 оператор добавляет 1 со значением ASCII 1-го элемента строки и печатает его.
И *s печатает 1-й элемент строки.

+0

ASCII, возможно, нет. Должен сказать: «добавляет 1 с помощью значения единицы кода». Даже если мы предположим, что в кодировке фактического набора символов все кодовые точки являются одним блоком кода, приращение кодовой точки не обязательно приводит к действительной кодовой точке. Например, [Windows-1252] (http://en.wikipedia.org/wiki/Windows-1252) имеет отверстия. –

1

просто говоря, «строка», расположенная в области ПЗУ, как вы можете их изменить?

Смежные вопросы