// first declare currentscheme as a pointer to an integer
int * currentscheme;
// then you can set values of currentscheme like this
// remembering that the name of an array used without brackets is a pointer to the first element of the array
currentscheme = (int *)scheme1;
//and do this
if (currentscheme == (int *) scheme1)
currentscheme = (int *)scheme2;
// and this kind of thing (assuming x is declared as an int)
x = currentscheme[3];
// just watch out that you don't overflow the array bounds
// personally I wouldn't bother declaring the arrays as const int (just int)
// then you don't need all the casting.
etc etc