Before calling a function through a FUNCADDR variable or array, code checks the address in the variable or array element. If the address is zero, no function is called, but a return value of zero is simulated and execution continues at the next statement. Therefore, invalid array elements can be left at zero, and zero can be assigned to FUNCADDR variables and array elements to cancel existing entries.
Functions are recursive, meaning they can call themselves directly or indirectly. AUTO and AUTOX variables are allocated anew each time the function is invoked. STATIC variables are shared by every instance of the function.