我是C语言编程的新手,我正在尝试使用在main()中创建的.h实现。到目前为止,我有一个.h文件,一个实现.h文件的.c文件,并且我正在使用另一个具有主要功能的.c文件。我已经运行了.h和.c实现文件,它工作正常。我相信我要弄乱的部分是使用主文件中的实现。我遇到的错误是分段错误核心已转储。到目前为止,这是我要尝试的事情
//.h file
typedef struct stack{
int* data;
int size;
int capacity;
} STACK;
STACK* MakeStack(int initialCapacity);
//Other Push,Pop,Grow Functions
我的第二个文件(prog1_2.c)是该头文件的实现,该头文件执行应有的操作,例如我的MakeStack方法是:
//prog1_2.c
STACK* MakeStack(int initialCapacity){
struct stack *newStack = (struct stack*) malloc( sizeof(struct stack));
newStack->size = 0;
newStack->capacity = initialCapacity;
newStack->data = (int*)malloc(sizeof(int)*initialCapacity);
return newStack;
}
最后,我遇到问题的部分是此prog1_3.c主文件。我几乎可以确定我搞砸的原因是因为我以错误的方式使用了Stack结构。我认为我会搞砸的具体路线是
//prog1_3.c
STACK *myStack;
然后我继续使用myStack作为push和pop参数中的变量,例如Pop(myStack)或Push(myStack,value)。这些确切的行产生了转储的分段故障核心。任何有关指导我完成我做错事情的意见,将不胜感激。谢谢。
答案 0 :(得分:3)
STACK *myStack;
->
STACK *myStack = MakeStack(42);