Pointer oder Index läuft auf das gleiche raus. Index is ein Pointer ab feldanfang, Pointer ab Speicheranfang. Ich würde mich entscheiden, je nachdem WO und WIE ich im restlichen Programm die Daten brauch oder hab'.
Code:
char readChar(void); 
char Instring[MAX_CHAR]; 
char* InPnt = (char*)&Instring[0];    // ich geh gern auf Nr.Sicher und caste 

SIGNAL(SIG_USART_RECV) { 
     *InPnt = readChar(); 
      switch (*InPnt) 
     { 
     case ENTER:                    // ev. signalisieren an "Main()" 
          *InPnt = 0;
           break;  
    case START:                   // Startzeichen ?? 
           InPnt = (char*)&Instring[0];
           break;  
     default: 
           InPnt++;
           break;  
    } 
}