Стек из строк, программа сегфолтится - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пытаюсь сделать простейший стек, программа сегфолтится при попытке обратиться к функции pop().
#include <stdio.h>
#define MAX 100
 
char *myStack[MAX];
int top = 0;
 
void push(char*);
const char* pop(void);
 
int main(int argc, char **argv)
{
    push("fff");
    printf("%s\n", pop());
    return 0;
}
 
void push(char *str)
{
    if (top < MAX)
        myStack[top++] = str;
}
 
const char* pop(void)
{
    if (top >= 0)
        return myStack[top--];
    return 0;
}
Где я ошибаюсь?

Решение задачи: «Стек из строк, программа сегфолтится»

textual
Листинг программы
return myStack[top--];

Объяснение кода листинга программы

  1. myStack - это массив или другой тип данных, который используется для хранения строк.
  2. top - это переменная, которая используется для отслеживания индекса верхнего элемента в стеке.
  3. myStack[top--] - это выражение, которое используется для получения значения верхнего элемента в стеке и уменьшения значения переменной top на 1.
  4. Значение выражения myStack[top--] возвращается из функции.

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы