“STACK”之前的错误预期表达式

时间:2013-12-06 11:42:55

标签: c stack

typedef struct student *std_ptr;

   struct student
    {
        int number;
        std_ptr next;
    };
    typedef std_ptr STACK;

    create_stack(void)
    {
        STACK S;
        S = (STACK) malloc( sizeof( struct student ) );

        if(S == NULL) printf("out of space!");
        return S;
    }

    void push(int x, STACK S)
    {
        std_ptr tmp;
        tmp = (std_ptr) malloc(sizeof(struct student));

        if(tmp == NULL) printf("out of space!");

        else
        {
            tmp -> number = x;
            tmp -> next = S -> next;
            S -> next = tmp;
        }
    }

    int main()
    {
        push(12058010,STACK S);
        return 0;
    }

我试图调用函数,我得到错误:堆栈前预期的表达式。我也尝试调用这个函数

    int main()
    {
        push(12058010,S);
        return 0;
    }

这次我得到错误:'S'未声明(首次使用此功能)

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

  1. 通过执行以下操作定义变量s

    STACK s;
    
  2. 初始化:

    s = create_stack();
    
  3. 测试初始化​​是否成功:

    if (NULL == s)
    {
      return EXIT_FAILURE;
    }
    
  4. 通过这样调用push()来使用它:

    push(12058010, s);
    
  5. 这一切看起来像这样:

    int main(void)
    {   
        STACK s = create_stack(); /* This merges step 1 and 2. */
        if (NULL == s)
        {
          return EXIT_FAILURE;
        }
        push(12058010, s);
        return EXIT_SUCCES;
    }
    

答案 1 :(得分:0)

S既不在全球范围内,也不在main()范围内。

我怀疑您打算将STACK S = create_stack();写为main()中的第一个语句。

不要忘记free已分配的内存。