Вы не можете использовать арифметику указателей на пустых указателях, так как же работают массивы пустых указателей? - PullRequest
0 голосов
/ 07 июля 2019

Из прочтения уроков я понимаю, что за кадром оператор ([]) делает то же самое, что и арифметика с указателями.

Learncpp говорит следующее: «Оказывается, что когда компилятор видит оператор индекса ([]), он фактически переводит это в сложение и разыменование указателя!».

Wikibooks затем говорит следующее: «Переменная, объявленная как массив некоторого типа, действует как указатель на этот тип. При использовании сама по себе она указывает на первый элемент массива».

Затем, прочитав о пустых указателях, мне было интересно узнать, как будет работать их массив? Я полагаю, что мое понимание чего-то должно быть неправильным.

Для примера следующие два должны быть идентичны.

а)

void* array[5];
array[1] = nullptr;

б)

void* array[5];
*(array + 1) = nullptr;

1 Ответ

2 голосов
/ 07 июля 2019

Массив указателей в вашем случае просто ** - void**.

Вы знаете размер void*, поскольку это просто еще один указатель.

...