The code you've shown is almost right.  The problem is in your function declarations:
myValueType function1(myParam){}
myValueType function2(myParam){}
These are old-style K&R non-prototyped declarations - the name of the parameter is myParam, and the type has not been specified.  Perhaps you meant this?
myValueType function1(myParamType myParam){}
myValueType function2(myParamType myParam){}
Expanding your code out to a minimal compilable example:
typedef int myValueType, myParamType;
enum { CONSTANT_STATE1, CONSTANT_STATE2 };
myValueType function1(myParamType myParam){}
myValueType function2(myParamType myParam){}
void f(myParamType myParam)
{
    myValueType myValue;
    myValueType (*myArray[2])(myParamType);
    myArray[CONSTANT_STATE1] = &function1;
    myArray[CONSTANT_STATE2] = &function2;
    myValue = (*myArray[CONSTANT_STATE1])(myParam);
}