jubincn

导航

2012年3月13日 #

C中为什么参数以列表反序压入堆栈中

摘要: 转自:《C和指针》中文版,p396 我们现在可以推断出为什么参数要按照列表反序压入到堆栈中。被调用函数使用帧指针加一个偏移量来访问参数。当参数以反序压入到堆栈时,参数列表的第一个参数便位于堆栈中这堆参数的顶部,它距离帧指针的偏移量是一个常数。事实上,任何一个参数距离帧指针的偏移量都是一个常熟,这和堆栈中压入多少个参数并无关系。 如果参数以相反的顺序压入到堆栈会怎样呢(即按照参数列表顺序)?这样一来,第一个参数距离帧指针的偏移量就和压入到堆栈中的参数数量有关。编译器可以计算出这个值,但还是存在一个问题 -- 实际传递的参数数量和函数期望接受的参数数量可能并不相同。在这种情况下,这个偏移量是不.. 阅读全文

posted @ 2012-03-13 14:35 jubincn 阅读(215) 评论(0) 推荐(0)