我想在C中编写标准堆栈,但我不确定我的stk_size()函数是否可以在除我的32位pc之外的其他平台上运行.我读到指向int的指针并不好.但是什么可以是更好的实施?我不想添加"大小"变量,因为它在我眼中是多余的.
以下是来源的一些部分:
#define MAX_STACK_SIZE 100
typedef struct stk stack;
struct stk
{
/* Stack */
int * stk;
/* Pointer to first free element of stack */
int * sp;
};
void stk_init(stack* s)
{
/* Allocate memory for stack */
s->stk = malloc(sizeof(s->stk) * MAX_STACK_SIZE);
/* Set stack pointer to first free element of stack -> 0 */
s->sp = s->stk;
}
int stk_size(stack* s)
{
return ((int) s->sp - (int) s->stk) / sizeof(int *);
}
int main(int argc, char * argv[])
{
stack * s;
stk_init(s);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
首先,你有一个错误.您没有为stack对象分配空间.你也想要
int main(int argc, char * argv[])
{
stack s;
stk_init(&s);
}
Run Code Online (Sandbox Code Playgroud)
要么
int main(int argc, char * argv[])
{
stack * s = malloc(sizeof(stack));
stk_init(s);
}
Run Code Online (Sandbox Code Playgroud)
至于你的问题,我看到@Crashworks在输入时已经回答了它.