gpt4 book ai didi

c++ - 这段代码在 C++ 中究竟是如何工作的

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:53:20 24 4
gpt4 key购买 nike

例如这段代码:

#include <iostream>
using namespace std;

void foo(int* x){ cout << "X = " << *x << endl;}

int main()
{
int value = 5;
int *p = &value;
foo(p);
foo(&value);
return 0;
}

在函数 foo 的第一次调用中,实际上在函数内创建了指针 p(x) 的拷贝,并在函数结束后立即删除,对吗?在 foo 的第二次调用中,获取变量值的地址并使用该地址创建指针 x 并在函数结束后立即删除,对吗?就堆栈内存消耗而言,这些调用中的哪一个更便宜?或者两者是一回事?

最佳答案

它们都很相似。第一个看起来更昂贵,因为您创建了两次指针,一次作为局部变量(在 main 内),另一次作为函数参数(传递给 foo),但是编译器的“优化”阶段可能会将第一个变成第二个(假设您对 p 所做的唯一事情就是传递它,并且您以后不会在 main 中重用它)。

关于c++ - 这段代码在 C++ 中究竟是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13457486/

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