Стек из строк, программа сегфолтится - 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--];
Объяснение кода листинга программы
myStack- это массив или другой тип данных, который используется для хранения строк.top- это переменная, которая используется для отслеживания индекса верхнего элемента в стеке.myStack[top--]- это выражение, которое используется для получения значения верхнего элемента в стеке и уменьшения значения переменнойtopна 1.- Значение выражения
myStack[top--]возвращается из функции.