Указатель типа char и его инкрементация.

#include <stdio.h>
#include <stdlib.h>

main() {
    char *ch;

    ch = "qwerty";
    ch++; // Инкрементация адреса
    printf ("%c\n", *ch);
    system("pause");

    ch = "qwerty";
    *ch++; // Инкрементация символа из строки?
    printf ("%c\n", *ch);
    system("pause");
}

Оператор ch++ сдвигает значение адреса, хранящегося в переменной, на значение следующего адреса, в результате чего выводится второй символ строки — «w».
Но *ch++ приводит к тому же результату, хотя при этом, если я правильно понял работу разыменования, должна происходить операция (*ch = 'q' + 1).
Объясните, пожалуйста, почему это происходит?

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.