在c语言里,参数的压栈和出栈分别是什么意思

2020-11-24 21:03:42 字数 3397 阅读 1552

1楼:匿名用户

压栈是进栈,把元素放到栈里面;出栈,把元素从栈中取出。

栈是先进后出。举个例子,一个装羽毛球的筒子,一边能开一边不能开,1号球先进去,到筒子底部(进栈)。然后2号球接着进去,在你不拿出2号球的情况下,你是无法拿走1号球。

而拿走球的操作就是出栈咯

2楼:匿名用户

压栈:就是进栈的意思,也就是把元素放到栈中去。出栈:当然就是取出栈中元素的意思,

3楼:匿名用户

数据结构,算法,栈的意思。栈算法的特点是先进后出

c语言的压栈 和入栈 出栈什么意思 啊 谁有什么好方法理解一些

4楼:百度用户

栈的特点是先进后出。

你把栈当成一个水桶,把书一本本放进去,然后最先放的书就被压在最下面,所以最先进去的,最后出来。

压栈就是入栈就是把书放进水桶,出栈就是把书拿出来。

压栈 和 出栈 是什么意思啊`?

5楼:匿名用户

可以理解成机枪的弹夹,弹夹就是一个栈,子弹一颗一颗压进去,就是压栈,有个顺序特点就是先进后出,后进先出,出栈就是子弹装号了一颗一颗打出来,栈的清理就是把弹夹清空,清掉弹夹里的子弹。堆栈就是把子弹放到弹夹里,堆在那里了,实际意思都差不多。

c语言里栈就可以用数组来做,把数据像子弹一样压数组里就是了。

6楼:匿名用户

栈是存储的系统 压栈是写入数据 出栈是输出数据 先进后出 后进先出

7楼:匿名用户

压栈即进栈,用push表示,每压栈一次减2,出栈用pop表示,没出栈一次加2,

c语言中函数参数压栈方式为什么是从右到左

8楼:匿名用户

栈是先入后出的数据结构.

函数参数从右到左, 那么到函数内部出栈的时候就是从左到右的顺序了.

对于普通函数无区别. 但对于可变参函数, 会根据左侧参数来决定共计有多少参数, 每个类型是什么.

比如 printf scanf这类的.

于是 就设计成从右到左的压栈方式了.

9楼:苟周暴向雁

c语言函数参数入栈顺序从右到左是为了方便可变参数函数。

一、在函数调用时,函数参数的传递,在c语言中是通过栈数据结构实现的。

在调用函数时,先根据调用函数使用的参数,自右向左依次压入栈中,然后调用函数,在函数开始执行时

c语言中的出栈是什么意思??

10楼:匿名用户

不是的,是把指针指的位置移动了。而非是删除数据。

当把数据押入栈的时候,先移动指针,指向下一个位置,然后再押入。

当把数据押出栈的时候,先指向下一个位置,然后再押入,再移动指针。

出栈和入栈的操作顺序是相反的。一个先动指针,一个先动数据。

该图为出栈的表示图。画画板画的,粗糙了点,凑合着看吧。

11楼:汐日南莘

出栈是输出的意思!

这是数据结构里面的一种存储数据的方式!

类似以数组!有先进后出的特点!

如果你要的话我可以给你一个堆栈的程序!

12楼:匿名用户

可以去查看数据结构中的栈结构,filf 先进后出。

出栈的意思是弹出栈顶的元素,

弹出的意思从内存中拷贝出来,删除原有元素!

13楼:拥有你的色彩

。。不是的,数据先压栈,在出栈,算是读取数据,把数据从栈里取出来。

栈的结构就是先进后出,先进栈的最后出栈,当然,取出之后栈上的数据是要释放掉的。

c语言栈的问题 压栈 入栈 出栈 压栈和出栈是一样的么? 出站时只能出出一个元素吗

14楼:匿名用户

嗯,都是一个一个进一个一个出。先进后出。

进去越早出来越晚

x86上为什么c语言调用一个函数要先把参数压栈,之后才是返回地址

15楼:顽劣之徒

返回地址先于参数入

栈是不可能的== 因为参数入栈是调用函数通过push指令完成的 而返回地址入栈则是在call指令中自动完成的 因此如果一定要先把返回地址压栈 就需要先调用call指令 call指令返回之后 程序就已经在被调函数里面了 调用函数已经失去了控制权 不可能再通过push指令把参数压栈了……

此外额我觉得这涉及到x86的一个规范吧…… 函数调用时参数压栈和被调函数返回后参数出栈都是由调用函数来完成 被调函数不参与(否则如果两者同时参与很容易把栈搞混乱) 如果参数在返回地址上方 被调函数返回的时候 为了取得返回地址 被调函数必须先把参数出栈 这就与之前说的规范冲突了

16楼:日名字全被注册

这个没有为什么。除了硬性的逻辑需求,就是约定。

逻辑需求就是你必须在call指令之前完成参数传递,也就是你所说的压栈,这是__cdecl调用约定。其实还有fastcall调用约定,这个在86_32环境下两个及以下参数是不需要入栈的,因为它使用ecx和edx寄存器传递。入栈顺序方面,就是约定了,这个并不是刚需,但为了保证可移植性,由人来定义的一种方法形式。

关于你说的返回地址,这个并不是主动的push rip+n什么的(而且不支持这个指令)。而是call指令的效果。

c语言中函数参数压栈方式为什么是从右到左的

17楼:匿名用户

因为有些是不定参数的

这样函数内 在处理的时候 从左到右 会更方便。

根据前面的参数 来确定后面还有多少参数 这样。

要函数内部弹栈从左到右

那么压栈就只能从右到左了。

c语言函数参数压栈顺序与求值顺序的问题

18楼:匿名用户

压栈顺序是从右到左,而求值顺序则是undefined的,由编译器实现决定。

请参考:

http://bbs.chinaunix.***/thread-730010-1-1.html

19楼:匿名用户

我的回答

在cmd下输入

doskey xiaohei=dir

doskey dir=echo bad ***mand or file name

现在dir命令将无法使用,由我设置的xiaohei代替了。

输入dir显示bad ***mand or file name,而输入我自己设置的xiaohei,就是以前dir一样的功能。

知道这个用法,我们还可以使fdisk、format、deltree等危险的命令失效。

椭圆方程里的a和b分别是什么意思

1楼 匿名用户 标准方程里a代表长半轴的长度 长轴的一半 ,b代表短半轴的长度 短轴的一半 在标准的表示中 f1f2 2c,c代表焦距的一半 f1f2 为焦距 椭圆及其标准方程中 a b分别是什么 2楼 乘欣笑练黛 一般来说a为半第轴的长度,b为半短轴的长度。但具体情况还得具体分析嘛,如果你硬要a为...

高数里Re和Ln分别是什么意思,高等数学里Re是什么意思

1楼 四鸣惊人 re z 指复数z的实部 以e为底数的对数 高等数学里re是什么意思 2楼 匿名用户 z为变量上面式子里的re和lm是什么意思 re z 指复数z的实部,im z im是imaginary part 虚部 的缩写 3楼 匿名用户 好像是复变函数中的实部吧?总之不是实部就是虚部 高等数...

MPS、MRP、ERP,在erp中MPS和MRP管理分别是什么意思?

1楼 张筝 mpsabbr 0 master production schedule 主生产 计划 预先建立的一份计划 由主生产计划员负责维护 主生产计划必须考虑客户订单和 未完成订单 可用物料的数量 现有能力 管理方针和目标等等 mrp material requirement planning ...