社区
C++ 语言
帖子详情
系统取函数的实参是从后面开始取还是从前面开始取
wuyan16001
2008-10-26 10:32:09
调用函数的时候,系统取函数的实参是从后面开始取还是从前面开始取?
比如要调用的函数为 swap(a,b),其中a,b是输入的实参。系统是先取b,还是先取a
...全文
75
8
打赏
收藏
系统取函数的实参是从后面开始取还是从前面开始取
调用函数的时候,系统取函数的实参是从后面开始取还是从前面开始取? 比如要调用的函数为 swap(a,b),其中a,b是输入的实参。系统是先取b,还是先取a
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xzhangyu
2008-10-26
打赏
举报
回复
这个和编译器有关吧。压栈的方式不一样而已。一般是从左到右吧,比如如果带变参的情况。
wuyan16001
2008-10-26
打赏
举报
回复
[Quote=引用 2 楼 akirya 的回复:]
都有可能.
[/Quote]
哦,那请教下,啥时候会从前面调用先,啥时候从后面调用呀
珍惜生命远离CPP
2008-10-26
打赏
举报
回复
都有可能.
xhs_lh04
2008-10-26
打赏
举报
回复
前面
arong1234
2008-10-26
打赏
举报
回复
5楼的帖子你看没看啊?不是已经告诉你了么?
[Quote=引用 7 楼 wuyan16001 的回复:]
哦,那有没有从左到右调用的
[/Quote]
wuyan16001
2008-10-26
打赏
举报
回复
哦,那有没有从左到右调用的
帅得不敢出门
2008-10-26
打赏
举报
回复
一般从右向左的.
5楼说的很详细.
kiffa
2008-10-26
打赏
举报
回复
一般是自右向左压栈的,另外需要注意的是参数求值顺序和压栈顺序没有必然的联系。
以下是转帖的内容:
关于函数的调用约定:
__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。
1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,
2、_cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。注意:对于可变参数的成员函数,始终使用__cdecl的转换方式。
3、__fastcall调用约定:它是通过寄存器来传送参数的(实际上,它用ECX和EDX传送前两个双字(DWORD)或更小的参数,剩下的参数仍旧自右向左压栈传送,被调用的函数在返回前清理传送参数的内存栈)。
4、thiscall仅仅应用于"C++"成员函数。this指针存放于CX寄存器,参数从右到左压。thiscall不是关键词,因此不能被程序员指定。
5、 naked call采用1-4的调用约定时,如果必要的话,进入函数时编译器会产生代码来保存ESI,EDI,EBX,EBP寄存器,退出函数时则产生代码恢复这些寄存器的内容。naked call不产生这样的代码。naked call不是类型修饰符,故必须和_declspec共同使用。
C语言从入门到精通+贪吃蛇游戏开发实战
一维数组,多维数组,查找和常用排序算法,结构体与指针,自定义
函数
的定义与使用,
函数
的
实参
与形参;用户图形界面,大量的上课习题,深入浅出的详细讲解,结合开发贪吃蛇游戏实战项目,能达到精通C语言的目标。
模板
实参
、模板
函数
实参
前情 ...如果能根据模板
函数
实参
表得到足够的信息确定全部虚拟类型参数对应的实际参数,且是参数表的后几个,就可以省略。 示例代码段一 #include &l...
函数
基础——形参和
实参
文章目录
函数
参数的两大分类形参和
实参
的具体使用位置参数关键字参数默认参数可变长参数*号和**号在
实参
中的使用组合使用
函数
参数的两大分类 形式参数:在
函数
定义阶段括号内声明的参数就叫形式参数,简称"形参",...
c语言
函数
调用--
实参
求值顺序
如果
实参
表列包括多个
实参
,对
实参
求值的顺序并不是确定的,有的
系统
按自左到右顺序求
实参
的值,有的
系统
从右到左的顺序。许多C版本是按自右向左的顺序求值,如dev c++
C++
函数
默认参数(
函数
传入
实参
个数比形参个数少)
在C++中,定义
函数
时可以给形参指定一个默认的值,这样调用
函数
时如果没有给这个形参赋值(没有对应的
实参
),那么就使用这个默认的值。也就是说,调用
函数
时可以省略有默认值的参数。如果用户指定了参数的...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章