Code Bye

关于*p++和*- -p的问题

在《C Programming Language》的字符指针那一节里,有这一段代码和注释:
*p++ = val;    /* push val onto stack */
val = *–p;      /* pop top of stack into val */
第一句是入栈的过程,先*p=val,然后p++。第二句不太理解了,按照代码,应该是–p之后,再把新地址的值赋给val。但是按照注释的说法,是把栈顶元素弹出栈并赋给val,然后栈指针才减1, 这也是符合出栈的过程的。
到底这一段代码有没有错误,还是本人理解错了,请高手指点一下~~
解决方案

10

引用:

但是按照注释的说法,是把栈顶元素弹出栈并赋给val,然后栈指针才减1, 这也是符合出栈的过程的。

看不出有这个说法

60

栈顶指针一般都是指向栈顶元素的下一个位置。
所以要取栈顶元素,需要让栈顶指针先减1再取值才行。(所以这样注释完全OK)
PS:谁也没说过栈顶指针一定要指着栈顶元素啊?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于*p++和*- -p的问题