当我试图将元素推送到堆栈我得到分段错误,但如果我打开堆栈地址(我标记为“!!!”),它是它接受它的符号。但是这次在每次推动中,它会创建新地址并且不会增加最高价值。c指针作为输入
typedef struct
{
struct table **symbols; // array of the stack
int top; //index of the top element
int size; //maximum size of the stack
}stack;
void push(stack *stck,struct table *element)
{
if(stck->top == stck->size)
{
printf("stack is full");
return;
}
stck = malloc(sizeof(stack)); !!!
stck->symbols = (struct table **)malloc(50 * sizeof(struct table*)); !!!
printf("top : %d\n",stck->top);
stck->top = stck->top++;
printf("%d"&stck->top);
stck->symbols[stck->top] = element;
printf("top : %d\n",stck->top);
}
你所有的逻辑是完全错误的。 投射不会使指向指针的指针确实指向指针的地址。 你必须用一个循环手动填充它,并为'表'的每一行分配空间 – 2009-12-21 16:55:06