Structures in C and C++Declaring a StructThe syntax for a struct declaration differs between C and C++. Although the C version is still valid in C++, it is slightly clunkier.In C++: struct [struct_name] { type attribute; // ... [struct_name *struct_attribute;] } [instance1, [instance2, ...]];A struct declaration requires the keyword struct, optionally the name of the struct (see below), and a body consisting of one or more attributes. It is possible to optionally include a self-referential pointer, but not possible to include a struct of type struct_name (struct_name struct_attribute). If one or more structs is immediately desired, the entire declaration can be treated as a type, and the name of one or more instances may follow the declaration. In this case, it is possible to omit struct_name entirely, though this is not advisable. To declare a struct for use at any other point, the name of the struct, struct_name, can be used as though it were any other type. struct_name struct_instance [, instance2, ...];In C: [typedef] struct [struct_name] { type attribute; type attribute2; // ... [struct struct_name *struct_instance;] } [struct_name_t] [struct_instance];In this case, there are two options: the first is to omit both typedef and struct_name_t, in which case to declare a struct you will need to actually include the struct keyword: struct struct_name struct_instance;Or you can use a typedef to declare a struct_name_t type that you can use: struct_name_t struct_instance;In either case, if you wish to declare a pointer to a struct inside of the struct, you must use the first syntax, with the keyword struct: struct struct_name *struct_instance; Related Tutorial on structs |