当前位置: 首页 > wzjs >正文

做3d任务的网站网站图片如何做水印

做3d任务的网站,网站图片如何做水印,网页设计网站含义,网站开发工程author: hjjdebug date: 2025年 05月 07日 星期三 17:51:43 CST description: c中默认参数值是怎样实现的? 文章目录 1.什么是函数参数的默认值.2. 限制:3. C默认参数是怎样实现的? 1.什么是函数参数的默认值. 在函数声明中, 可以在参数列表中为某些参…

author: hjjdebug
date: 2025年 05月 07日 星期三 17:51:43 CST
description: c++中默认参数值是怎样实现的?


文章目录

  • 1.什么是函数参数的默认值.
  • 2. 限制:
  • 3. C++默认参数是怎样实现的?

1.什么是函数参数的默认值.

在函数声明中,
可以在参数列表中为某些参数指定默认值
在函数调用中,
如果用户指定了参数的值,那么就使用用户指定的值,否则就使用函数原型中定义的参数的默认值。

2. 限制:

默认参数只能从右向左定义.
原因是简化与编译器的约定,方便编译器补全缺省的值. 见最后的总结.
如果不加此限制,而是规定有默认值的优先级低,右边参数默认值优先级低于左边参数默认值优先级,
编译器也能理解用户意图,原则上也能实现.
但那就要重改编译器,且比现在的要复杂一些了,似乎也没这个必要.

3. C++默认参数是怎样实现的?

看一个简单实例:

$ cat main.cpp 
#include <iostream>// 函数声明,带有默认参数
void add(int a, int b = 5) {std::cout << "Sum: " << a + b << std::endl;
}int main() {add(3);       // 使用默认值:b = 5, 输出 8add(3, 10);  // 不使用默认值,输出 13return 0;
}

其反汇编代码:

(gdb) disassemble/s main
Dump of assembler code for function main():
main.cpp:
8	int main() {0x000055555555521e <+0>:	endbr64 0x0000555555555222 <+4>:	push   %rbp0x0000555555555223 <+5>:	mov    %rsp,%rbp9	    add(3);       // 使用默认值:b = 5, 输出 8
=> 0x0000555555555226 <+8>:	mov    $0x5,%esi        // 默认值5送给了第二个参数esi0x000055555555522b <+13>:	mov    $0x3,%edi0x0000555555555230 <+18>:	callq  0x5555555551c9 <add(int, int)>10	    add(3, 10);  // 不使用默认值,输出 130x0000555555555235 <+23>:	mov    $0xa,%esi   // 调用值10送给了第二个参数esi0x000055555555523a <+28>:	mov    $0x3,%edi0x000055555555523f <+33>:	callq  0x5555555551c9 <add(int, int)>11	    return 0;0x0000555555555244 <+38>:	mov    $0x0,%eax12	}0x0000555555555249 <+43>:	pop    %rbp0x000055555555524a <+44>:	retq   
End of assembler dump.

我查看了一下: disassemble/s 与disassemble/m 其输出内容是一致的. 几乎没有差别.
一个修饰符是source ,一个修饰符是mix, 其实都一样的.

x86-64函数调用协议, %edi是第一参数,%esi是第2参数, 我们看到编译器把默认值5送给了第二个参数esi
它的前6个参数都是用寄存器传递,超过6个用堆栈传递.

跟gcc的约定是,当调用者参数少于函数原型个数时,从右侧开始补全,把默认值填上去.


文章转载自:

http://IzEGnE1v.mbmtn.cn
http://ibmBPpmK.mbmtn.cn
http://lREfMPmD.mbmtn.cn
http://76lBJzpc.mbmtn.cn
http://p2OCx8fS.mbmtn.cn
http://GF0Qajwv.mbmtn.cn
http://uusJtvx8.mbmtn.cn
http://wDlUNRjF.mbmtn.cn
http://5VMKg8SU.mbmtn.cn
http://EVfHTTEc.mbmtn.cn
http://KSnzfXby.mbmtn.cn
http://3hHTrAll.mbmtn.cn
http://ik6EjtXr.mbmtn.cn
http://5MWyd9gK.mbmtn.cn
http://QVx2fnSK.mbmtn.cn
http://tP7rpLMj.mbmtn.cn
http://vnw55HNS.mbmtn.cn
http://rBCJlNDF.mbmtn.cn
http://HEPBwYmm.mbmtn.cn
http://QO0IjJti.mbmtn.cn
http://MH6fQeWS.mbmtn.cn
http://ORdA4088.mbmtn.cn
http://npRZMeRw.mbmtn.cn
http://IwcAABOV.mbmtn.cn
http://EkStTIxu.mbmtn.cn
http://gc6zcUhl.mbmtn.cn
http://0PFbfaq9.mbmtn.cn
http://AnCjU1Bu.mbmtn.cn
http://7if1tgBG.mbmtn.cn
http://q6OqpJP9.mbmtn.cn
http://www.dtcms.com/wzjs/754874.html

相关文章:

  • 中国建设银行网站登陆做网上商城网站哪家好
  • 北京手机网站搭建多少钱怎么自己弄网站免费
  • 企业网站开发成本sap.net怎么做网站
  • .net做网站之前设置如何做网站在网上销售
  • ui设计和网站开发佛山网络公司哪个好
  • 需要登陆的网站如何做爬虫织梦搭建网站
  • 微信官方微网站吗盐城市网站建设
  • 企业网站制作 徐州推广普通话活动总结
  • yy陪玩网站怎么做企业网站建设的申请
  • 国外网站 设计沈阳百度seo关键词优化排名
  • 免费团购网站模板公司建设网站成果预测
  • 购物网站页面网上做广告宣传
  • 龙海市住房和城乡建设局网站如何搭建虚拟专用网络
  • 网站优化是在哪里做修改厦门seo
  • 登录网站后没有转页面无锡建设局网站一号通
  • 网站设计的目的网站规划的要素不包括
  • 企业网站空间多大信息网站大全
  • 北京市建设工程造价管理处网站南城免费做网站
  • 书店中文网站模板互联网营销师培训费用是多少
  • 洛阳青峰网络百度官方优化软件
  • 爱站网影视排行榜如何网站公司小程序
  • wordpress点击图片不显示油烟机seo关键词
  • 无锡新区规划建设环保局网站网站开发价格预算
  • 无锡网站制作哪家实惠金坛市建设银行网站
  • 郑州五合一网站建设江西核工业建设有限公司网站
  • 做网站策划书怎么在百度提交自己的网站
  • 多语言站点 wordpress营销策划品牌策划
  • linux建立网站校园网站建设案例
  • 城乡建设部统计信息网站佛山高端网站建设公司
  • 如何用模板做公司网站公司建站文案给网站公司看的