Вы не просто «создаете массив целых указателей»: вы динамически выделяете их.
Так же, как когда вы динамически выделять массив целых чисел вы получите один указатель, через который к ним доступ:
int* ptr = new int[5];
когда вы динамически выделять массив указателей-на-целое число вы получите один указатель через которые также могут получить доступ к ним; так как ваш тип элемента int*
, добавив дополнительный *
дает int**
:
int** ptr = new int*[5];
Что касается разыменования, я не совсем уверен, что вы просите, но это только, как работает оператор []
; он добавляет n
к указателю, то разыменовывает это:
int* ptr = new int[5];
*(ptr+1) = 42; // identical
ptr[1] = 42; // to this
Если вы забыли динамическое выделение и просто сделать хороший массив, все гораздо проще:
int* array[5];
std::cout << array[0];
Что это за «это не сработало»? Каково ваше определение «это сработало»? Используйте точный язык, пожалуйста. Мы здесь ученые. –
«int *» указывает на 'int' или первый элемент массива' int'. Если вы хотите указывать на 'int *', а не на 'int', вам нужно' int ** '(указатель на int указатель или на первый элемент массива int указателей). – Galik
«Мне нужно было сделать следующее». - О'рли? –