O * p = новый O [5]; На что р указывает? - PullRequest

Ответы [ 5 ]

15 голосов
/ 15 июля 2010

Да.

11 голосов
/ 15 июля 2010

Точно.*p и p[0] одинаковы.Вот некоторые полезные функции, которые вы хотите знать:

  • «Нотация указателя» обычно относится к использованию оператора «разыменования» (или «косвенности»)
  • «Нотация массива» обычно относится киспользование скобок и значения смещения

Вы можете представить адрес в памяти, используя либо взаимозаменяемо:

  • *p эквивалентно p[0]
  • *(p+1) эквивалентно p[1], и более удивительно также эквивалентно 1[p]

ПРИМЕЧАНИЕ :

  • Как отмечено в другомответ, общая форма такова, что *(p+i) эквивалентно p[i]
  • Также, пожалуйста, не используйте i[p]
7 голосов
/ 15 июля 2010

p содержит адрес первого O массива.

Индексация происходит так:

p[i] = *(p+i); //note the pointer arithmetic
7 голосов
/ 15 июля 2010

Правильно - *p эквивалентно p[0].

0 голосов
/ 15 июля 2010

* p указывает на первый элемент p [0].

...