在C编程中将.h文件实现到main()中

时间:2018-09-28 17:35:33

标签: c stack

我是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)。这些确切的行产生了转储的分段故障核心。任何有关指导我完成我做错事情的意见,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:3)

STACK *myStack;

->

STACK *myStack = MakeStack(42);