Реализация .h файла в main () в C-программировании - PullRequest
0 голосов
/ 28 сентября 2018

Я новичок в программировании на C и пытаюсь использовать реализацию .h, которую я создал в main ().Пока у меня есть файл .h, файл .c, который реализует файл .h, и я работаю над другим файлом .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.Я почти уверен, что причина, по которой я путаюсь, состоит в том, что я неправильно использую структуру стека.Конкретная строка, о которой я думаю, что я испорчена, это

//prog1_3.c
STACK *myStack;

, а затем я использую myStack в качестве переменной в параметрах push и pop, таких как, например, Pop (myStack) или Push (myStack,значение).Эти точные строки дают сбой ядра сегментации.Буду очень признателен за любую информацию, которая поможет мне понять, что я делаю неправильно.Спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018
STACK *myStack;

->

STACK *myStack = MakeStack(42);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...