c++函数参数和返回值

打印 上一主题 下一主题

主题 845|帖子 845|积分 2535

c++函数参数和返回值

c++一直以来是一个关注效率的代码,这样关于函数的参数传递和返回值的接收,是重中之重。下文提供了一些个人的见解。
函数存储位置

函数参数在编译期展开,目前各平台的编译期均有不同。
名称存储位置函数名称和逻辑代码段存储函数参数和返回值栈中或者寄存器(64位会有6个寄存器使用)new malloc 的变量堆函数参数入栈顺序

微软有几种编译期属性,用来定义函数参数的顺序和堆栈。
关键字堆栈清理参数传递__cdecl调用方在堆栈上按相反顺序推送参数(从右到左)__clrcall不适用按顺序将参数加载到 CLR 表达式堆栈上(从左到右)。__stdcall被调用方在堆栈上按相反顺序推送参数(从右到左)__fastcall被调用方存储在寄存器中,然后在堆栈上推送__thiscall被调用方在堆栈上推送;存储在 ECX 中的 this 指针__vectorcall被调用方存储在寄存器中,然后按相反顺序在堆栈上推送(从右到左)所以直接在函数参数上,调用表达式和函数来回去值的话,非常危险
初始化列表

[code]class Init1{public:    void Print()    {        std::cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表