С
typedef struct {
int a;
int b;
} example;
вы определяете безымянную структуру, но определяете псевдоним типа example
для структуры. Это означает, что вы можете создавать только экземпляры структур, используя example
«тип», например,
example my_example_structure;
С
struct something {
int a;
int b;
} ob;
вы определяете структуру с именем something
и экземпляр (переменную) этой структуры с именем ob
. Вы можете использовать struct something
для создания новых переменных структуры:
struct something my_second_ob;
Переменная ob
может использоваться как любой другой экземпляр структуры:
printf("b = %d\n", ob.b);
Наконец, с
typedef struct foo {
int a;
int b;
} bar;
вы определяете структуру с именем foo
, поэтому вы можете использовать, например, struct foo
для определения переменных. Вы также определяете псевдоним типа bar
, который также можно использовать. Как например
struct foo my_first_foo;
bar my_second_foo;
Общий синтаксис для typedef
:
typedef <actual type> <alias name>;
В последнем случае ваших примеров, <actual type>
равен
struct foo {
int a;
int b;
}
и <alias name
равно bar
.