Using an identifier (variable) before its declaration results in an error. And to avoid this we just declare it but not define it and is called forward reference.
See the following example where it is necessary to define the forward reference as two structure are having cross reference -
struct foo; // Forward reference
struct bar
{
struct foo *f;
};
struct foo
{
struct bar *b;
};