六星云课堂:C/C++函数调用的5种方法,你一定要懂!

 2024-03-13 03:05:30  阅读 0

本文主要对C/C++函数调用的几种方式进行了详细的总结和介绍。 有需要的朋友可以过来参考一下。 希望对大家有所帮助。

计算机函数参数表示的各种方法_函数计算机参数方法表示什么_计算机函数参数的含义

当调用函数时,计算机通常使用堆栈来存储传递给函数的参数。

栈是一种先进后出的数据结构。 栈有一个存储区域和一个栈顶指针。 栈顶指针指向栈中第一个可用的数据项(称为栈顶)。 用户可以将数据添加到堆栈顶部的堆栈中。 这个操作称为推送。 压入后,栈顶自动成为新添加的数据项的位置,栈顶指针也相应修改。 用户还可以将栈顶移出栈,这称为出栈(pop)。 出栈后,栈顶以下的元素成为栈顶,栈顶指针相应修改。 调用函数时,调用者将参数依次压入堆栈,然后调用该函数。 函数调用后,从栈中获取数据并进行计算。 函数计算完成后,调用者或函数本身都会修改堆栈,将堆栈恢复到原始状态。

在参数传递中,有两个重要的问题必须明确说明:

1、当参数多个时,按什么顺序将参数压入栈;

2.函数调用后,谁将堆栈恢复到原来的状态。

在高级语言中,这两个问题都是通过函数调用来说明的。

下面分别介绍这些调用方法:

1.

呼叫方式也称为主叫方式。 在C++系列的C/C++编译器中,宏、宏、宏是用来指定函数如何调用的。

调用方法的函数声明为:

int (int a, int b);

调用方法的意思是:

(1) 参数从右到左一次入栈。

(2)被调用函数本身恢复堆栈

(3) 函数名自动添加前导下划线,后面跟@,后面跟参数的大小。

上述函数翻译成汇编语言将变为:

push b 首先压入第二个参数

压入 a,然后压入第一个参数

呼叫呼叫功能

在编译时,该函数的名称被翻译为@8

2.cdecl

cdecl调用方式,也称为C调用方式,是C语言默认的调用方式。 其语法为:

int(int a, int b) //不带修饰符的是C调用方法

int(int a, int b) // 显式指定C调用方式

cdecl的调用方式决定:

(1) 参数按从右到左的顺序入栈。

(2)调用者恢复堆栈

(3)函数名自动添加前导下划线

由于调用者恢复堆栈,因此C调用方式允许函数的参数个数不固定,这是C语言的一大特点。

这种方式的函数翻译为:

push b // 先压入第二个参数

Push a // 压入第一个参数

call // 调用函数

add esp, 8 // 清空堆栈

在编译时,这种方式的函数被翻译成:

3.

从名字就可以看出,这是一种快速调用方法。 这样函数的第一个和第二个DWORD参数是通过ecx和edx传递的,

后续参数按从右到左的顺序压入堆栈。

被调用的函数清除堆栈。

修改函数名的规则相同

标签: 堆栈 函数调用

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码