Functions are declared thus:

type function_name (type parameter_name, type parameter_name)
any local variable declarations;
the code of the function;
[ return [expression]];

And are called from within an expression thus:

return_value = function_name (parameter, parameter)

If the function returns no value, the type name void may be used to indicate this:

void function_name (type parameter_name, type parameter_name)

Since an expression in C does not have to be assigned to anything, the following statement to call the function is still valid:

function_name (parameter, parameter)

Similarly, if the function has no parameters, the type name void may be used to indicate this:

type function_name (void)

A function with no parameters must be called using the form:

return_value = function_name ()

function_name, with no parentheses, returns the address of the entry point of the function.

By default, all parameters (except for arrays) are passed by value to a function. They appear as local variables, and if modified do not affect the variable which was passed.

To enable a variable to be modified within a function, its address must be passed instead:

return_value = function_name (&variable)

and the function declared as taking a pointer parameter:

type function_name (type* parameter_name)
*parameter_name = value to set variable to

Note that unindexed arrays always have their address passed anyway, so the & operator is optional.