gpt4 book ai didi

c - 堆栈指针应该指向顶部的值,还是指向下一个值的位置?

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:49 25 4
gpt4 key购买 nike

例如,拿这个例子函数:

#include <stdlib.h>

#define MAX 100
typedef struct stack {
int sp;
int val [MAX];
} STACK;


void initStack (STACK *s){
s->sp = 0;
}

int push (STACK *s, int x){
if(s->sp == MAX) return -1;
else s->val[s->sp++] = x;
return 0;
}

int main(){
STACK s;
int pushval, p;

initStack(&s);

p = push(&s, 1);
pushval = s.val[s.sp-1];
printf("pushval %d\n", pushval);

return 0;
}

所以在这种情况下,如果我执行 s.val[s.sp],我会得到乱码。如果我执行 s.val[s.sp-1],我会得到压入堆栈的值。我不知道堆栈指针是否应该指向“下一个可用空间”也就是等于数组中元素的数量或者应该等于数组最后一个元素的索引,也就是数组中元素的数量 - 1

最佳答案

这只是约定俗成的问题。许多实现让栈顶指针指向“下一个可用空间”,但只要您的栈在外部按预期运行,您就可以真正做自己喜欢的事。

关于c - 堆栈指针应该指向顶部的值,还是指向下一个值的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37701734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com