2015-04-30 2 views
-1

У меня есть 2 структуры в моем C-коде. Я хочу написать хеш-функцию с этими двумя структурами. Поэтому я хочу инициализировать мои данные null в первом случае. Мой кодКак выделить память для структуры внутри другой структуры?

struct HashNode 
{ 
    char username[20]; 
    char password[20]; 

}; 

struct HashTable 
{ 
    int size; 
    struct HashNode *table; 
}; 

HashTable *initializeTable(int size) 
{ 

    HashTable *htable; 

    if (size < MIN_TABLE_SIZE) 
    { 
     printf("Table Size Small\n"); 
     return NULL; 
    } 
    htable = (HashTable *)malloc(sizeof(Hashtable)); 

    if (htable == NULL) 
    { 
     printf("memory allocation pblm\n"); 
     return NULL; 
    } 
    htable->size = size; 
} 

Как я могу выделить память для htable->table с таким размером? У меня есть код на C++, например htable->table = new HashNode [htable->size];. Как я могу написать это на C с помощью malloc?

+1

'таНос (размер * SizeOf * (htable-> таблица))' кажется хорошей ставкой. И если это C, остановите «malloc» (https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc). – WhozCraig

+0

У меня есть одно сомнение. Является ли память автоматически распределенной для «struct HashNode», когда я вызываю htable = (HashTable *) malloc (sizeof (Hashtable)); ?? потому что указатель внутри этой структуры. – user39320

+0

@ пользователь39320, no. –

ответ

0

Вы можете выделить память таким образом

htable->table = malloc(size*sizeof(HashNode)) 
Смежные вопросы