c++默认参数顺序为什么是自右往左?为什么不能从左往右呢?请问这是什么原因。
压栈顺序和大端字节序和小端字节序一样,哪个都可以的。C语言默认选择从右往左,应该是因为栈是向下增长的,所以这样会使压入的参数内存排列正好和书写的顺序一致而已,调试看内存可能比较方便。不过实际代码访问都是栈指针+偏移的方式,所以对于机器来说没有特别意义。
能不能支持可变参数,主要是看是不是由调用者负责清除堆栈。比如__stdcall也是从右往左压栈,但是被调用者清除堆栈,所以不支持可变参数。
__pascal是模仿PASCAL语言从左往右压栈,VC已经不再支持了。
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
自右往左 可以支持任意个参数
参数是要压栈的,栈 是先入后出,如果是从左往右压入栈中,要找到最左边的第一个参数就很麻烦~