2016-08-05 37 views
0

IM编程全新的,我得到了很多错误:)堆栈中C,“廉政”

我尝试编写我的第一个堆栈这样的,并尝试检查空之前预期的表达式:

#define SIZE 10 
    struct stack { 
     int myTop; 
     int items[SIZE]; 
    }; 
    int empty(int *s); 
int main() { 
    struct stack s; 
    s.items; 
    s.myTop; 
    int i; 
    int x; 
    for (i = 0 ; i < SIZE ; i ++) { 
     printf("enter you element"); 
     scanf("%d", &s.items[i]); 
    } 
    if (empty(int *s)) 
     printf("stack is empty"); 
    else 
     printf("stack is not empty"); 


    getchar(); 
    return 0; 
} 
int empty(int *s) { 
    if (s -> myTop == -1) 
     return 1; 
    else 
     return 0; 
} 
    enter code here 

和我得到这个错误: 行24预期的表达befor'int',它的意思是为了上帝的缘故吗? 和其他 plz帮助新来的家伙:)

+0

24行似乎是'return 0;' – doctorlove

+1

尝试删除s.items; s.myTop;从main()和'在此输入代码'。 – someuser

+0

什么是's.items;'和's.myTop;'应该这样做? –

回答

3

这条线的问题是:

if (empty(*s)) 

将其更改为:

if (empty(&s)) 

而且你的方法原型是错误的,它应该是:

int empty(struct stack *s) 

您无法将结构指针传递给i nt指针。

另外你在这里没有任何分配:

s.items; // = ? 
s.myTop; // = ? 

不知道你正在尝试,但你完全编译代码(忽略警告)是here

+0

谢谢,它的工作, –

+0

@wizardofoz - 欢迎:) – Sadique