我不知道为什么函数使用指针的方式不同

时间:2019-04-15 12:32:04

标签: c

我不知道指针的概念,所以我问。 我不知道为什么函数使用指针的方式有所不同。

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)

功能相同,但调用为何不同?

2 个答案:

答案 0 :(得分:4)

函数s中的变量main的类型为StackType

函数s中的变量is_full的类型为StackType*

答案 1 :(得分:0)

虽然振动正确,但知道&传递的内容是StackType的地址也很重要,该地址位于*s内-指针变量地址传递给它,从而启用了对内存的操作(例如,在else情况下执行的操作)