2013-06-22 4 views
0

я пытаюсь создать двумерный массив pointers.What неправильно с объявлением нижеСоздание двумерного массива указателей

Node* root[100][100] = new Node*[100][100]; 
+2

Во-первых, скажите нам, где вы получили этот код из или почему вы ожидали работать? (если у вас нет источника, ваш вопрос недействителен - вы не можете просто сбрасывать случайный код в компиляторе и надеяться на лучшее) –

+0

«Что не так с объявлением ниже» - Ну: «Ошибка: инициализатор массива должен быть список инициализаторов "- Вы доверяете" clang ", или я должен объяснить, почему это неправильно? –

+0

@LuchianGrigore: уверенный вы можете! Вы просто в конце концов спросите, почему это не работает :) – ChiefTwoPencils

ответ

0

Осознайте, что первый элемент является указателем на указатель, так что вы должны иметь корень как указатель указатель на указатель. И тогда по существу вы создаете 100 указателей для каждого указателя.

Node*** root=new Node**[100]; 
for(int i=0;i<100;i++) 
    root[i]=new Node*[100]; 

Теперь корень [40] [60] будет иметь тип Node *.

См. Рабочий пример here.

+0

Спасибо aravind ... Теперь, если мне нужно передать такие указатели в функции, я могу просто пройти корень с соответствующим индексом, например root [50] [60] – Nagsaver

+0

Скомпилирует ли это? –

+0

Luchian george NO – Nagsaver

0

Интересно, нужен ли вам «указатель [на] двумерный массив».

Node (*root)[100][100] = new Node[1][100][100]; 

или «указатель [работает] в 2 одномерный массив»

Node (*root)[100] = new Node[100][100];