2016-11-02 2 views
0

Я не уверен, это даже возможно, но я в основном пытаюсь определения структуры с массивом той же структуры внутри него, например, такОбъявив массив структур в пределах одной и той же структуры

struct Node { 
    int numMatches = 0; 
    Node* leaves[26] = {}; 
}; 

Каждый узел будет содержать массив указателей с фиксированной длиной для других узлов (представляющих буквы). Я пытаюсь пройти через эти узлы, переходя в соответствующий лист, когда мне нужно. Я бы инициализировал массив «голова» Node * и сгладил этот путь. Это немедленно происходит, и я могу понять, почему это может быть - он не знает, сколько памяти выделяется для массива таких структур. Не совсем уверен, как решить проблему.

Довольно простая проблема, но я не нашел ни одного C++/C конкретных потоков с этим же вопросом.

Спасибо!

+4

Почему бы не ударил компилировать и посмотреть, работает ли он? – NathanOliver

+2

, конечно. Массив содержит указатели на структуры, а не на структуры. Вы должны выделить каждый из них, как вы хотите его использовать. –

+1

'Node * leaves [26] = {NULL};' инициализирует массив указателя NULL. Лучше, чем ничего, я думаю. Нам нужно будет увидеть ваш код контекста, чтобы помочь вам дальше. –

ответ

1

В вашем struct вы не использовали массив из same struct, но массив pointers to the same struct - и это имеет значение.

Pointers имеют известна длина (например, 32-битные в 32-разрядных операционных систем) независимо от объекта они указывают, так что ваша структура просто выделяет (возможно)

  • 32 бита = 4 байта для mumMatches
  • 26 * 32 бит = 26 * 4 байта = 104 байт для leaves


  • 108 байт вообще

Смежные вопросы