Почему p [0] ++ отличается от * (p) ++ в C - PullRequest
0 голосов
/ 25 июня 2018

Когда я пытался выполнить эти коды в C

#include <stdio.h>

int main(void)
{
     int arr[] = {10, 20};
     int *p = arr; 
     p[0]++;   // *(p)++;
     printf("arr[0] = %d, arr[1] = %d",arr[0], arr[1]);
     return 0;
}

вывод: arr [0] = 11, arr [1] = 20

при заменеp[0]++; по *(p)++;

вывод: arr [0] = 10, arr [1] = 20

Пожалуйста, объясните, почему это так.Я знаю, что [i] эквивалентно * (a + i)

1 Ответ

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

Выражение:

p[0]++; 

в основном увеличивает значение с индексом 0.

, в то время как

*(p)++

Увеличивает указатель на следующий адрес.

Пример:

int arr = {10,20};

int *p = arr; // p points to the first element of array, i.e 10
*(p)++; // now p points to the next element i.e 20.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...