Так что это очень простая реализация стека (это массив с просто поп-функциями pu sh pop). Я пытаюсь понять, почему мой индекс не изменяется после помещения значений в массив. Первоначально у меня была переменная itop, расположенная в main как «int itop = 0», но поскольку значение itop оставалось равным 0, я подумал, что, возможно, это проблема передачи по ссылке, когда C берет копию значения и на самом деле не меняет само передаваемое значение. Так что я подумал, что хорошо, я бы сделал это stati c int наверху (я знаю, что это не лучшая практика из-за небезопасного поведения потока ...), но это все же не сработает.
Кто-нибудь указывает мне на понимание этой основы c концепции? Спасибо
#include <stdio.h>
void push(int a[], int, int);
int pop(int a[], int);
static int itop = 0;
int main(void){
int stack[100];
push(stack, itop, 1);
push(stack, itop, 2);
printf("index is %d\n", itop);
int p1 = pop(stack, itop);
printf("index is %d\n", itop);
int p2 = pop(stack, itop);
int p3 = pop(stack, itop);
printf("popped elements: %d %d %d\n", p1, p2, p3);
return 0;
}
void push(int a[], int ind, int elem){
a[ind++] = elem;
}
int pop(int a[], int ind){
if (ind < 0){
return -1;
}
else {
return a[ind--];
}
}