c语言与c++函数调用区别
来源:互联网 发布:java从入门到放弃 pdf 编辑:程序博客网 时间:2024/05/01 07:10
c语言与c++函数调用区别
有如下代码
class father{
private:
int a;
public:
father(int b){a=b;}
void ADD(int a){}
};
void add(int a){};
int main(int argc, char* argv[])
{
father a(1);
a.ADD(1);
add(1);
return 0;
}
ADD为c++函数,add为c函数,查看反汇编代码
发现add函数调用后多了条add esp,4指令,这条指令是为了清空函数调用过程中传递参数所分配的栈空间
那ADD函数也有参数,为什么ADD函数后没这条指令?
莫急接下来让我们分别进入两个函数的内部来看看
跳转到ADD
跳转到add
我们会发现ADD的ret指令为ret 4而add的为ret,其实这个4就是为了清除函数调用为参数分配的栈空间与add esp,4指令是相同的作用
C语言与c++的这两种函数调用分别叫做cdel,stdcall,它们的参数压栈方向都是自右向左,不同的是,参数的栈空间是由调用者还是被调用者清除,,,,,,
注:vc6.0
0 0
- c语言与c++函数调用区别
- C语言函数调用方式的区别
- C语言函数调用
- 【C语言】调用函数
- C语言函数调用
- C语言与C++语言函数互相调用
- C语言-内部函数与外部函数+调用实例
- c语言 \\ 与 \区别
- C语言函数调用框架
- C语言函数调用约定
- C语言函数调用约定
- C语言函数调用约定
- C语言函数调用约定
- C语言函数调用约定
- C语言函数调用约定
- C语言函数调用约定
- C语言函数调用约定
- C语言函数调用约定
- springmvc图片的本地上传和存放数据库
- 360QVM支持输入向量API一览
- js冲突 解决的办法
- java中几种常见的设计模式
- java中入门代码第一个
- c语言与c++函数调用区别
- SVD奇异值分解
- 有关Dos的认识
- java,map遍历,输出键值
- 封装网络请求
- ADT中的Android Virtual Device Manager中找不到我的android设备的手机
- 黑马程序员--Java基础--程序流程控制
- 杭电OJ--2098 分拆素数和
- File的使用方法