gpt4 book ai didi

c++ - 使用未初始化的指针作为函数参数

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

因为我想将一个未初始化的指针传递给一个函数,它会出现运行时错误。但是如果我将这个指针作为引用传递,它就可以正常工作。我无法解释为什么...

class Body
{

};

void check(Body* b)
{
b = new Body();
}

void checkRef(Body* &b)
{
b = new Body();
}

int main001()
{
Body* b;

//check(b);// error: The variable 'b' is being used without being initialized. (in VS2010)
checkRef(b); // OK


return 0;
}

b传给check和checkRef有什么区别?我在 VisualStudio2010 中遇到运行时错误。错误:正在使用变量“b”而未初始化。

编辑:这是一个 VS2010 调试输出。 “错误”没有出现在发布版本中

最佳答案

为了等价于checkRef版本,你的 check函数应为:

void check(Body** b)
{
*b = new Body();
}

并称为

check(&b);

如果您不传递地址,就像您在 check(b) 中所做的那样,那么您传递的是指针 b 的当前这确实是未初始化的。

关于c++ - 使用未初始化的指针作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5896062/

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