2013-12-09 4 views
0

У меня есть структура:Размер структуры

typedef struct { 
    char fname[100], lname[100]; 
    int age, salary; 
} *employer; 

А теперь, я хочу указатель переменной empl1, который содержит достаточно места для 100 сотрудников:

employer empl1 = malloc(100 * sizeof(employer)); 

Проблема заключается в том, что sizeof (работодатель) is (размер указателя на моей машине). Как я делаю размер всего работодатель structure? (208 в моем случае).

ответ

5

У вас есть недопустимый (несостоятельным) использование typedef struct, с/б typedef struct ... employer; (без звездочки/указатель)

Я также рекомендую вам сделать:

typedef struct { 
    char fname[100]; 
    char lname[100]; 
    int age; 
    int salary; 
} employer; 
+0

Так что это неправильно делай, как я? –

+1

Да, ваш typedef не должен разрешать указатель (и обычно «набирать» каждый элемент в вашей структуре). – KevinDTimm

+1

Определение типа является синтаксически допустимым (он создает тип структуры без имени, только тип указателя, полученный от него, имеет имя). Но я нахожусь в лагере «не набирать указатели», поэтому я согласен, что это плохая идея. –

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