Note: The following is not a definition of actual FreeVariables as seen in mathematics, but that of top level lexically scoped variables.
A free variable is a variable used within a function, which is neither a formal parameter to the function nor defined in the function's body (and in scope at the point of the variable's use).
For example, in this C function, printf and phase_shift are free variables. The first is a standard library function; the second had better be defined by the programmer; else this function is in error. angle, being a formal parameter, is not a free variable; nor is x. The first use of sin is a FreeVariable; it too is a standard library function (one which returns the sine of the angle). The second use of sin (in the if statement) is not, as a local definition for sin is provided (which shadows the library function).
We could argue that "double", "if", and "int" are FreeVariables as well; but those are keywords so we'll ignore them.
void silly (double angle)
{
double x = sin (angle + phase_shift);
printf ("The sine of the angle, phase shifted, is %f\n", x);
if (angle > 0)
{
int sin = 7;
printf ("There are %d deadly sins, %d if you count "
"pointer arithmetic\n", sin, sin+1);
},
},
Programming languages handle free variables via one of the ScopingRules.