c语言函数经典调用哪两种 c语言中函数的调用方式有哪些( 二 )


今天看了篇介绍的文章,才比较清楚了点 。thiscall,用于类的成员函数调用,
__thiscall对每个函数都增加了一个类指针参数
classaa
{
voidbb(intcc);
};
实际上bb的函数原形是voidbb(aathis,intcc);
以前知道类的成员函数在调用时会传入一个this指针,而不晓得thiscall就是专门指定了这种调用方式 。__cdecl调用方式即为C,C++默认的调用方式 。
voidInput(intm,intn);/*相当于void__cdeclInput(intm,intn);*/
其特点是:1,由主调用函数进行参数压栈并且恢复堆栈;2 , 在主调用函数中进行实参的压栈并且顺序是从右到左;3,由于主调用函数管理堆栈,所以可以实现变参函数 。
__stdcall则是标准调用方式,实际上就是PASCAL,CALLBACK,WINAPI ,其特点是:_主调用函数中负责压栈,在被调用函数中负责弹出堆栈中的参数,并且负责恢复堆栈 。因此不能实现变参函数,参数传递是从右到左 。另外,命名修饰方法是在函数前加一个下划线(_),在函数名后有符号(@),在@后面紧跟参数列表中的参数所占字节数(10进制),如:voidInput(intm,intn),被修饰成:_Input@8。
C语言中,函数调用的问题!如果一个函数要使用参数 , 它就必须定义接受参数值的变量 。
形式参数与实际参数
函数定义时填入的参数我们称之为形式参数 , 简称形参,它们同函数内部的局部变量作用相同 。形参的定义是在函数名之后和函数开始的花括号之前 。
调用时填入的参数 , 我们称之为实际参数,简称实参 。
必须确认所定义的形参与调用函数的实际参数类型一致,同时还要保证在调用时形参与实参的个数出现的次序也要一一对应 。如果不一致 , 将产生意料不到的结果 。与许多其它高级语言不同,(是健壮的,它总要做一些甚至你不希望的事情,几乎没有运行时错误检查,完
全没有范围检测 。作为程序员 , 必须小心行事以保证不发生错误,安全运行 。
赋值调用与引用调用
一般说来,有两种方法可以把参数传递给函数 。第一种叫做“赋值调用”(call
by
value) , 这种方法是把参数的值复制到函数的形式参数中 。这样 , 函数中的形式参数的任何变化不会影响到调用时所使用的变量 。
把参数传递给函数的第二种方法是“引用调用”(call
by
reference) 。这种方法是把参数的地址复制给形式参数,在函数中,这个地址用来访问调用中所使用的实际参数 。这意味着,形式参数的变化会影响调用时所使用的那个变量
【c语言函数经典调用哪两种 c语言中函数的调用方式有哪些】关于c语言函数经典调用哪两种和c语言中函数的调用方式有哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读