ich eine Struktur haben, wie folgt:C ein Array-Index zu aktualisieren, die ein struct Mitglied ist aktualisiert auch alle bisherigen Indizes
struct Stack {
int top;
struct Token data[size]};
};
Und die folgende Push-Methode:
void push(struct Stack *st, struct Token tok) {
(*st).top++;
(*st).data[(*st).top] = tok;
}
Jedes Mal, wenn ich den Anruf Push-Methode auf einer Struktur Stack s, es aktualisiert das gesamte Array s.data (bis Index oben) mit dem neuen Wert statt nur die angegebenen Indexdaten [top]. Irgendwelche Ideen, warum das passiert?
struct Stack stack1;
stack1.top = -1;
readNext();
//currentToken.value == "class"
push(&stack1,currentToken);
readNext();
//currentToken.value == "test"
push(&stack1,currentToken);
readNext();
//currentToken.value == "{"
push(&stack1,currentToken);
readNext();
//currentToken.value == "int"
push(&stack1,currentToken);
printStack(stack1);
Ausgabe lautet:
int
int
int
int
Mehr Code anzeigen. BTW '(* st) .' sollte' st-> 'geschrieben werden. –
@michael Waltz: Die Push-Methode wird wie folgt aufgerufen: push (& stack1, currentToken); – bzak
Zeigen Sie uns sowohl den Codeaufruf als auch den Code, der Ihnen sagt, dass das gesamte Array aktualisiert wurde. –