我必须在C中实现堆栈结构,但是当我分配“pila = initialize_stack();”时,此代码在main中失败。为什么? 我如何为这个实现做或者如果这个代码完全错误怎么能在C中实现堆栈?
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
//Define Struct
struct Stack {
int dim;
int array[MAX];
};
//Prototype Function
struct Stack inizialize_stack(); //inizialize a new empty Stack
void push(struct Stack pila, int num); //insert element in Stack
int pop(struct Stack pila); //extract element out of Stack
void printStack(struct Stack pila); //Print Element in Stack
int main(int argc, char **argv){
struct Stack pila;
pila = inizialize_stacK();
push(pila, 10);
push(pila, 13);
printStack(pila);
return 0;
}
struct Stack inizialize_stack(){
struct Stack pile;
pile.dim = 0;
return pile;
}
}
编译器会生成以下错误消息:
/TestStack.c:20:7: error: assigning to 'struct Stack' from incompatible type 'int' pila = inizialize_stacK()
答案 0 :(得分:1)
你有一个拼写错误,这是一个值得关注的问题但是
pila = inizialize_stacK();
/* ^ should be lower case */
您看,错误消息不是未定义标识符错误,因为编译器正在使用隐式函数声明并且它假定未声明的函数返回int
,这就是错误消息显示不兼容的分配的原因。
强制你的编译器使用最近的标准,从c99开始这应该是一个不同的错误,让你知道发生了什么,即让你发现错字。