我正在尝试编译我的代码而我收到此错误
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]);
}
我似乎无法弄清楚为什么它会给我这个错误。
答案 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]);
}
我还将函数更改为接受指向堆栈而不是堆栈的指针。否则,它会推送到堆栈的副本,并且调用者无法看到它所做的更改。