Ich hab zwar nicht verstanden, warum Pointer nicht in Ordnung sind, aber ansonsten seh ich zwei Möglichkeiten, was ähnliches zu realisieren:

Code:
void funktion_0 (void) {
  //...
}

void funktion_1 (void) {
  //...
}

void funktion_2 (void) {
  //...
}
oder das Gleiche erweitert durch folgende Funktion:
Code:
void funktion(int number)
{
  switch(number)
  {
    case 0:
      funktion_0();
      break;
    case 1:
      // ...
  }
}