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