Почему указатели ведут себя по-разному, когда работают с опаратором постинкрементного увеличения? - PullRequest
0 голосов
/ 24 июня 2018

Давайте посмотрим на первый код:

Следующий код отображает значение n=10:

#include<iostream>
int main()
{
    int n=10;
    int*p=&n;
    *p++;
    std::cout<<n;
    return 0;
}

Следующий код отображает значение n=11:

#include<iostream>
int main()
{
    int n=10;
    n++;
    std::cout<<n
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

p++ увеличивает указатель. Вам потребуется (*p)++ для увеличения значения.

0 голосов
/ 24 июня 2018

Приоритет оператора.

Первый случай анализируется как *(p++); - сначала увеличивается адрес, а затем разыменование. Это не меняет никаких значений.

Во втором случае просто увеличивается само значение.

...