Я пытаюсь создать массив структур элементов, как показано ниже:ЬурейеЕ требуется в объявлении структуры
#include <stdio.h>
#include <stdlib.h>
struct termstr{
double coeff;
double exp;
};
int main(){
termstr* lptr = malloc(sizeof(termstr)*5);
return 0;
}
Когда я скомпилировать это, я получаю ошибки следующим образом:
term.c: In function ‘main’:
term.c:11:1: error: unknown type name ‘termstr’
term.c:11:31: error: ‘termstr’ undeclared (first use in this function)
Однако , когда я изменить свой код к следующему, он компилирует как обычно:
#include <stdio.h>
#include <stdlib.h>
typedef struct termstr{
double coeff;
double exp;
}term;
int main(){
term* lptr = malloc(sizeof(term)*5);
return 0;
}
Я добавил ЬурейиЙ (с именем типа в качестве термина), чан ged имя struct to termstr и распределяет память с термином * как тип указателя.
Требуется ли typedef для такой ситуации, то есть для создания массивов структур? Если нет, то почему первый код дал ошибки? Требуется ли typedef для создания и использования одного экземпляра структуры?
Возможный дубликат [Что такое синтаксически правильный способ объявления C-структуры?] (Http://stackoverflow.com/questions/4698600/whats-the-syntactically-proper-way-to-declare-ac-struct) –
Нет, вам не нужно typedef. Вы также можете обойтись без него, но вам нужно добавить ключевое слово struct: 'struct termstr * lptr = malloc (5 * sizeof * lptr);' – wildplasser