我不知道指针的概念,所以我问。 我不知道为什么函数使用指针的方式有所不同。
int is_full(StackType *s)
{
return (s->top == (MAX_STACK_SIZE -1));
}
void push(StackType *s, element item)
{
if (is_full(s)) {
fprintf(stderr, "error\n");
return;
}
else {
s->data[++(s->top)] = item;
}
}
int main()
{
StackType s;
init_stack(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("%d\n", pop(&s));
printf("%d\n", pop(&s));
printf("%d\n", pop(&s));
}
在第一个功能中,我设置了is_full(StackType *s)
在第二个功能中,我设置了push(StackType*s, element item)
第二个函数调用if (is_full(s))
主要电话push(&s, 1)
功能相同,但调用为何不同?
答案 0 :(得分:4)
函数s
中的变量main
的类型为StackType
。
函数s
中的变量is_full
的类型为StackType*
。
答案 1 :(得分:0)
虽然振动正确,但知道&
传递的内容是StackType的地址也很重要,该地址位于*s
内-指针变量地址传递给它,从而启用了对内存的操作(例如,在else
情况下执行的操作)