스택에 요소를 푸시하려고하면 세그먼트 화 오류가 발생하지만 스택의 주소를 열면 ("!!!"로 표시된 경우) 기호로 받아들입니다. 그러나 이번에는 푸시 할 때마다 새로운 주소가 만들어지고 최고 가치가 올라가지 않습니다.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);
}
모든 논리가 완전히 잘못되었습니다. 캐스팅은 포인터에 대한 포인터를 실제로 포인터의 주소를 가리 키지 않습니다. 루프를 사용하여 수동으로 모두 채우고 '테이블' –