Арифметика указателей: На сколько увеличивается y? - PullRequest
0 голосов
/ 22 декабря 2018

Я борюсь с этой арифметикой указателя:

int x;
int *y = &x;
++y;

На сколько увеличивается y?

Я знаю, что: «&» является оператором ссылки и может читаться как «адрес».«*» является оператором разыменования и может читаться как «значение, на которое указывает».

Но я не совсем понимаю, как это работает.Правильно ли, что y содержит адрес x, * y показывает значение x?

Увеличивается ли y на 1?(если x = 4 = >> ++y = 1 + 4 = 5) или на 4?(из-за типа "int"? = >> ++y = 4 + 4 = 9)

Спасибо за помощь.

1 Ответ

0 голосов
/ 22 декабря 2018
  1. *y будет разыменовывать значение x

  2. ++ y будет ссылаться на следующий объект int.Но поскольку вы выделили пространство только для одного (определяя объект x), результат разыменования не определен.

  3. int x[2] = {1,2};
    int *y = &x[0];
    
    printf("%d\n, *y);
    y++;
    printf("%d\n, *y);
    

выведет

1 2

...