Normally, a structure type needs to be defined before you use it. But there are times when you need to refer to a structure type before its definition. In that case, use a forward declaration of the type, which is just the type heading followed by a semicolon. For example,
struct Cell;is a forward declaration for type Cell.
Forward declarations have a rather severe limitation. A forward declaration of type Cell allows you to use type Cell* before you define type Cell. But it does not allow you to use type Cell without a * before the definition of type Cell.
A definition of structure type T can refer to type T* without a forward declaration. For example, type definition
struct ListCell { ListCell* next; int item; };indicates that a value of type ListCell has two fields, one of which is a pointer to a ListCell. We will see uses of this when looking at data structures. It will also help to illustrate structure copying, which is next.
Can a definition of structure type Kangaroo contain a field of type Kangaroo? Answer
What is the purpose of a forward declaration of a structure type? Answer