Declaration of a variable makes the attributes of that variable known to compiler.
e.g. int fact(int );
in this case fact is a function and this statement makes the declaration of the function fact. compiler only knows the attributes of fact.

Defination of a variable not only makes the attributes of that variable known to compiler but also memory is allocated for that variable.
e.g: int a;
the attributes of a is known to compileras well as 4 byte is allocated to a.