Дан указатель double **p = 0;
Нужно создать конструкцию вида:

Длина массива вводится предварительно с клавиатуры. Обнулите все элементы массива. Поместите в первый и последний элементы число 2 и выведите массив на экран. Удалите все динамические объекты.
Мой код:
double **p = 0;
int size = 0;
cout << "Введите размер массива: ";
size = inputInt();
cout << "Размер массива: " << size << endl;
if (size <= 1) {
size = 1;
}
p = new double*[size];
for (int i = 0; i < size;i++) {
p[i] = new double(0);
cout << p[i] << "\t";
}
**p = 2;
*p[size-1] = 2;
for (int i = 0; i < size;i++) {
cout << *p[i] << "\t";
}
for (int i = 0; i < size;i++) {
delete[] p[i];
}
delete[] p;
Но меня терзают смутные сомнения, я считаю, что мой код является конструкцией вида:

Скажите, так ли это?
Не могли бы вы мне словами объяснить, что значит 1-ая конструкция?