En C existe una clara diferencia entre estos dos términos que en otros leguajes se emplean indistintamente.
La diferencia significativa es que la definición implica reserva de espacio y la declaración sólo supone dar información al compilador sobre un elemento que está definido en otro lugar.
Según esta terminología las declaraciones en C son las que se producen en las siguientes situaciones:
Las declaraciones se pueden repetir tantas veces como se quiera, la definición debe ser única.