Notes on typedef and struct
struct
and typedef
keywords.struct
To create a C structure, first create a new structure type:struct my_struct_tag { int member1; float member2; };Note that in the example above, the
struct
keyword is used only to create a new data type but it has not defined any variables yet.To define new varaibles of this structure type, do this:
struct my_struct_tag mystruct1; struct my_struct_tag mystruct2;
You can optionally combine these two steps and create the new data type and define variables:
struct my_struct_tag { int member1; float member2; } mystruct1, mystruct2;In this case the structure tag
my_struct_tag
is optional.typedef
From the K&R; book, thetypedef
keyword is used to create new data type names. For example:typedef int Length;
The name
Length
is a synonym for int
and can be used as follows:Length len, maxlen;
The
typedef
keyword can also be used to rename struct
data types. Using the example above:typedef struct my_struct_tag MyStructType; MyStructType mystruct1; MyStructType mystruct2;This creates a new data type name,
MyStructType
which is synonymous with the struct my_struct_tag
data type, and then defines two variables, mystruct1
and mystruct2
.You could combine the creation of the type name with the creation of the struct data type:
typedef struct my_struct_tag { int member1; float member2; } MyStructType;Like the previous example, this creates a new structure data type and creates a new type name,
MyStructType
which is synonymous with struct my_struct_tag
. Like the combo example in the struct section above, the structure tag, my_struct_tag
is optional. However, unlike that example, the identifier following the last curly brace (MyStructType
) is the new type name and not a new variable. To define the variables, use:MyStructType mystruct1; MyStructType mystruct2;See also How to share non-global C data structures
Technorati tags: c