gpt4 book ai didi

C++ 默认参数值

转载 作者:可可西里 更新时间:2023-11-01 16:57:04 24 4
gpt4 key购买 nike

编译器将 C++ 中的默认参数值存储在哪里?全局堆、栈还是数据段?

谢谢 jack

最佳答案

它们不一定存储在任何地方。在最简单的情况下,编译器将编译一个函数调用,就像存在缺少的参数一样。

例如,

void f(int a, int b = 5) {
cout << a << b << endl;
}

f(1);
f(1, 5);

f() 的两次调用很可能被编译为完全相同的汇编代码。您可以通过要求编译器为目标代码生成汇编列表来检查这一点。

我的编译器生成:

    movl    $5, 4(%esp)    ; f(1)
movl $1, (%esp)
call __Z1fii

movl $5, 4(%esp) ; f(1, 5)
movl $1, (%esp)
call __Z1fii

如您所见,生成的代码是相同的。

关于C++ 默认参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com