gpt4 book ai didi

c++ - 指针给C++带来麻烦

转载 作者:行者123 更新时间:2023-12-02 08:30:42 24 4
gpt4 key购买 nike

我得到了以下代码,它可以完美编译,但通过执行该程序,它只是崩溃并关闭。我不知道为什么。

main{
...
MLdouble *u = NULL;
_intersect(...,u,...); //u as MLdouble* type
...
}

CurvatureCalc::_intersect(... MLdouble *u)
{
...
MLdouble test = 123.21
*u = test; //<---line where it crashes
}

我做错了什么?可能是我刚刚监督的一些简单的事情。其他地方都没有使用 u 。我已经尝试过不同的变体,例如使用 u = &test ,这显然也不起作用。提前致谢。

最佳答案

由于您正在使用 C++ 进行编程,因此您真正应该做的是通过引用传递参数:

CurvatureCalc::_intersect(... MLdouble &u, ...)  // Note use of & instead of *
{
...
u = ...; // No dereference
...
}

并调用“正常”

MLdouble u;  // Not a pointer
_intersect(..., u, ...);
<小时/>

使用指针是模拟按引用传递的旧 C 方式,它的工作原理不是传递一个指针变量,而是将一个指针传递给多变的。像这样:

MLdouble u;  // Not a pointer
_intersect(..., &u, ...); // Note use of address-of operator & here

您现在所做的是取消引用空指针,这是不允许的。

关于c++ - 指针给C++带来麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35624291/

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