元素入栈时,会先将栈压入,top指针再向上加一。C语言如何实现呢,下面是入栈的代码片段:
typedef struct node
{
int * base;
int * top;
int stacksize;
}Sqstack;
void Push(Sqstack *S, int elem)//入栈
{
*S->top++ = elem; //元素先入栈,指针后加一
}
*S->top++ = elem,S本为指向node结构的一个指针,本来对普通结构体指针赋值或者使用用 S -> stacksize 语句就行,因为S本身存储的是该结构实例的首地址,->便可以以指针方式从S地址找到他的结构成员stacksize,但是这里为什么找结构成员top时前面加了*呢,我是这样理解的:
首先->并非是个二元字符,不应该同*比较优先级。如果认为他是个二元字符,优先级低于一元字符*,那么这里 *S -> top 就看成了 (*q) -> top,这语法便是错误的。前面博客所讲结构指针的成员赋值方式应该是