标识符堆栈错误

时间:2016-03-20 23:55:57

标签: c

我正在尝试编译我的代码而我收到此错误

error: expected identifier or '(' before '.' token
stack.T++;

以下是我的代码中的代码段。

#include <stdio.h>

typedef struct {
int * data; // array of the data on the stack
int size;
int T;
int x;
int a[];
} stack;



void push(T, x) {
    printf("\nT value%d",T);
    stack.T++;
    printf("\nT value%d",T);
    stack.a[stack.T]=x;
    printf("\n array value at position T %d",stack.a[stack.T]);
}

我似乎无法弄清楚为什么它会给我这个错误。

1 个答案:

答案 0 :(得分:1)

您需要使用stack类型定义来声明变量。

void push(stack *st, int x) {
    printf("\nT value%d", st->T);
    if (st->T >= st->size) {
        printf("\nStack size limit reached, can't push.");
        return;
    }
    st->T++;
    printf("\nT value%d",st->T);
    st->a[st->T]=x;
    printf("\n array value at position T %d",st->a[st->T]);
}

我还将函数更改为接受指向堆栈而不是堆栈的指针。否则,它会推送到堆栈的副本,​​并且调用者无法看到它所做的更改。